2017-03-09 52 views
0
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。 初始爲每個人獲取self.opener?甚至我的模式是錯的?如果那是好的,那麼記憶呢?Python超類__init __()?

+0

你是問你如何才能確保一個構造函數不叫? – Carcigenicate

+0

你甚至想在這裏做什麼?這些類是如何使用的? – tzaman

+0

您是否想創建一個開啓工具以在Fetcher的所有實例上共享? –

回答

1

當初始化子類時,你自然會調用超類的__init__。但是,您可以通過避免使其成爲超的類屬性限定每個實例的新opener對象:

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() 
+0

非常感謝^ _ ^ –

相關問題