需要python基本解释

时间:2013-04-06 12:29:26

标签: python

有人可以解释一下以下代码 TickGenerator继承了Observer的对象和方法,为什么我们需要observer.init?

class TickGenerator(Observer):
    def __init__(self):
        Observer.__init__(self)
        self.price = 1000

3 个答案:

答案 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__正在做什么。

This Stackoverflow answer will help you understand more.

答案 2 :(得分:1)

如果你不打电话给Observer。 init ,如下所示:

class TickGenerator(Observer):
    def __init__(self):
        self.price = 1000

这意味着您覆盖了TickGenerator。 init 方法和Observer。 init 将不会被自动调用。