有人可以给我解释下面的代码 TickGenerator从Observer的对象和方法继承,为什么我们需要两个observer.init?python基本解释需要
class TickGenerator(Observer):
def __init__(self):
Observer.__init__(self)
self.price = 1000
有人可以给我解释下面的代码 TickGenerator从Observer的对象和方法继承,为什么我们需要两个observer.init?python基本解释需要
class TickGenerator(Observer):
def __init__(self):
Observer.__init__(self)
self.price = 1000
如果你不叫观察员。 如下初始化:
class TickGenerator(Observer):
def __init__(self):
self.price = 1000
这意味着你覆盖TickGenerator。 init方法和观察者。 init不会被自动调用。
我猜你从哪里父类的构造函数会被自动调用的语言来。
在Python中,如果覆盖__init__
方法,则除非明确调用它,否则不会调用父类构造函数。
直到Python 3中,它曾经被称为:
def __init__(self, *args, **kwargs):
super(TickGenerator, self).__init__(*args, **kwargs)
新[super()][1]
语法(PEP-3135)就是:
def __init__(self, *args, **kwargs):
super().method(*args, **kwargs)
'Observer .__ init __(self)'是不是调用超类的构造函数? – 0x90 2013-04-06 12:36:50
我想OP的问题是为什么他必须根本调用'Observer .__ init __(self)',并且如果他精通父构造函数调用隐式的计算机语言,这是有道理的。 – 2013-04-06 12:38:11
因为程序员需要观察类__init__
除了 什么是在当前类的(TickGenerator)__init__
正在做的工作要做。
调用父类的构造函数的正规途径是使用'超()'内置。 – 2013-04-06 13:00:36