[英]Initialize inherited class outside constructor in Python
我有這樣的事情:
from some_module import SomeClass
class BaseClass:
...
class AnotherClass(BaseClass, SomeClass):
def __init__(self, parameter, **kwargs):
BaseClass.__init__(**kwargs)
self.parameter
def some_abstract_method(self, **kwargs):
# this is an abstract method declared in BaseClass
# and the arguments **kwargs must be passed here
# to respect the interface
SomeClass.__init__(self.parameter, **kwargs)
SomeClass.do_something()
return self
我這樣做的原因是要尊重BaseClass
的接口。 我想知道像這樣構造對象AnotherClass
有多糟糕,以及是否有更好的方法來實現我想做的事情。 我唯一想到的另一種方法是執行以下操作:
class AnotherClass(BaseClass):
def __init__(self, parameter, **kwargs):
super().__init__(**kwargs)
self.parameter
def some_abstract_method(self, **kwargs):
self.model = SomeClass(self.parameter, **kwargs)
self.model.do_something()
return self.model
但我不喜歡它,因為AnotherClass
本質上是同一對象具有SomeClass
。 基本上,我不知道最佳實踐是什么。
如果可以的話,我總是更喜歡組合而不是繼承。 原因多種多樣,但讓我們嘗試列舉一些原因:
因此,如果可以的話,我會提出您的第二個解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.