Python超类__init __()?

时间:2017-03-09 14:56:28

标签: python

class Fetcher:
    def __init__(self):
        self.opener = urllib.opener()
    def query(self, something):
        self.opener.open(something)

class Person (Fetcher):
    def __init__(self):
         super().__init__()
         super().function()
    def fetch(self):
        super().query()

如何重写Fetcher查询方法以跳过Fetcher。 init 为每个人获取self.opener?甚至我的模式都错了?如果那是好的,记忆呢?

1 个答案:

答案 0 :(得分:1)

在初始化子类时,您自然会调用超类的__init__。但是,您可以通过使每个实例成为超类的类属性来避免为每个实例定义一个新的开启者对象:

class Fetcher:
    opener = urllib.opener()
    def __init__(self):
        pass

    def query(self, something):
        self.opener.open(something)

class Person (Fetcher):
    def __init__(self):
        super().__init__()
        super().function()

    def fetch(self):
        super().query()