8
從某一基類派生的類都定義被稱爲「路徑」的屬性。在鴨打字的感覺,我可以在子類中依賴的定義:將參數傳遞給基類構造函數或使用實例變量?
class Base:
pass # no "path" variable here
def Sub(Base):
def __init__(self):
self.path = "something/"
另一種可能是使用基類的構造函數:
class Base:
def __init__(self, path):
self.path = path
def Sub(Base):
def __init__(self):
super().__init__("something/")
我使用Python 3.1。
你會喜歡,爲什麼?有沒有更好的辦法?
沒有什麼脆弱關於'超()'。脆弱性在2.x語法中,它在3.x(OP所使用的,如super()調用所示)中是固定的,並且通常是多重繼承。沒有任何理由可以直接在Python 3.x中調用baseclass方法,「super().__ init(...)」語法永遠不會更糟,通常也更好。 – 2010-04-28 10:04:18
通過使用'super'的情況來看,我猜想,守護進程正在使用py3k – SilentGhost 2010-04-28 10:04:25
@Thomas武泰:你會如何使用超級如果你所有的多重繼承和基類具有不同的構造函數簽名?將派生類的所有參數傳遞給所有基類看起來就像是一個骯髒的黑客攻擊,依賴於命名參數,並讓基類理清他們所需要的東西並不是太好。 – kriss 2014-04-14 10:04:24