[英]Initializing a Subclass Instance from a Superclass Object
logging.Logger
的文檔指出:
請注意,永遠不會直接實例化Logger,而是始終通過模塊級函數logging.getLogger(name)實例化。
這引出了以下問題(由於我想一般地詢問該原理,因此我將切換到一些Foo
類而不是logging.Logger
)。
假設有一些Foo
類,具有幾個屬性和方法:
class Foo:
def method_0(self..):
...
def method_1(self..):
...
def method_n(self..):
...
我想對Foo
進行子類化,並且僅專門研究其中的幾種方法。
class SubFoo(Foo):
def method_1(self, ...):
...
# Or super - not the point of the question.
Foo.method_1(self, ...)
...
問題在於Foo
沒有可用的構造函數,而只有通過getFoo
來創建Foo
類型的對象的getFoo
。 SubFoo
的“ Foo
”部分需要是“批准的” Foo
對象,並且我不知道如何強制將SubFoo
的Foo
部件設置為“批准的”對象。
注意
顯然,有幾種解決方法可以將Foo
子類化,例如,構圖,猴子補丁,使用__dict__
/ gettatr
聰明游戲等。盡管如此,這個問題還是關於子類化的。
您對繼承有誤解。 要創建SubFoo的實例,只需像實例任何其他類一樣將其實例化即可: SubFoo()
。
Python沒有構造函數,在任何情況下,未在子類上定義的方法將自動繼承超類版本,而無需執行任何操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.