2

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

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

3 回答 3

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)
于 2013-04-06T12:33:29.433 回答
3

因为除了当前类( TickGenerator)中正在做的事情之外,程序员还需要完成Observer类。__init____init__

这个 Stackoverflow 答案将帮助您了解更多。

于 2013-04-06T12:41:18.563 回答
1

如果你不打电话给观察者。初始化如下:

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

这意味着您覆盖 TickGenerator。init方法和观察者。init不会被自动调用。

于 2013-04-06T12:35:58.447 回答