Python 防止在父构造函数中调用的方法在子构造函数中调用
假设我有一个父类和一个从父类继承的子类Python 防止在父构造函数中调用的方法在子构造函数中调用,python,python-3.x,oop,Python,Python 3.x,Oop,假设我有一个父类和一个从父类继承的子类 class Parent: def __init__(self) stubborn() class Child(): def __init__(self): super().__init__(self) 我不希望每次调用父构造函数时都调用顽固的方法 在儿童班。如何处理此问题?您可以定义一个Parent的classmethod,用于检查您是否在Parent中,然后使用该方法确定是否调用顽固 class Parent
class Parent:
def __init__(self)
stubborn()
class Child():
def __init__(self):
super().__init__(self)
我不希望每次调用父构造函数时都调用顽固的方法
在儿童班。如何处理此问题?您可以定义一个
Parent
的classmethod
,用于检查您是否在Parent
中,然后使用该方法确定是否调用顽固
class Parent:
def __init__(self):
if self.is_parent():
self.stubborn()
@classmethod
def is_parent(cls):
return cls is Parent
def stubborn(self):
print("stubborn called")
class Child(Parent): pass
p = Parent() # stubborn called
c = Child() # no output
如果不实际更改该函数或
顽固()
,您将无法在父级中对其执行任何操作
但是,作为孩子,您可以通过临时将顽固()方法设为存根来阻止它做任何重要的事情:
class Child():
def __init__(self):
old_stubborn = self.stubborn
self.stubborn = lambda:None # stub function that does nothing
super().__init__(self)
# put stubborn() back to normal
self.stubborn = old_stubborn
完全重新设计。您必须更改父项。
为父项添加可选参数:def\uu初始化(self,call\u顽固=True):
?噢,讨厌!我想这个例子有助于将“动态”放在“动态语言”中!