有人可以解释一下以下代码 TickGenerator继承了Observer的对象和方法,为什么我们需要observer.init?
class TickGenerator(Observer):
def __init__(self):
Observer.__init__(self)
self.price = 1000
答案 0 :(得分:5)
我猜你是来自一种自动调用父类构造函数的语言。
在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)
答案 1 :(得分:3)
因为除了以外,程序员还需要观察者类__init__
当前班级( TickGenerator )__init__
正在做什么。
答案 2 :(得分:1)
如果你不打电话给Observer。 init ,如下所示:
class TickGenerator(Observer):
def __init__(self):
self.price = 1000
这意味着您覆盖了TickGenerator。 init 方法和Observer。 init 将不会被自动调用。