我不知道如何在python中干凈地重用派生類的classmethod來構造子類:
class Base:
def __init__(... lots of parameters .... )
... assign parameters ....
@classmethod
def from_file(cls,file)
.... read lots of parameters ....
return cls(.... lots of parameters .... )
class Derived(Base):
def __init__(derived_param, .... base parameters ..... )
super().__init__(base parameters)
@classmethod
def from_file(cls,file)
??? do i have to replicate the whole code from
Base.from_file() here ????
uj5u.com熱心網友回復:
您不必在子類中重新定義方法。默認情況下,它使用父函式:
class Base:
def __init__(... lots of parameters .... )
... assign parameters ....
@classmethod
def from_file(cls,file)
.... read lots of parameters ....
return cls(.... lots of parameters .... )
class Derived(Base):
def __init__(derived_param, .... base parameters ..... )
super().__init__(base parameters)
derived_class = Derived(...params...)
derived_class.from_file(...params...) # This line will work without any further changes
uj5u.com熱心網友回復:
謝謝。這可能是解決方案:
class Base:
def __init__(self,base_var):
self.base_var = base_var
@classmethod
def from_file(cls):
""" read from file here"""
base_init = "base_init"
return cls(base_var=base_init)
class Derived(Base):
def __init__(self,derived_var,base_var):
super().__init__(base_var)
self.derived_var = derived_var
@classmethod
def from_file(cls):
derived_init = "derived_init"
base = Base.from_file()
derived = cls(derived_init,base.base_var)
return derived
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/402951.html
標籤:
上一篇:如何檢測無效的kwargs?
下一篇:如何避免單個派生類實作的虛函式?
