通过super().__init__()
从子类调用__init__()
对我们来说很方便,但是当我想从孙子类调用__init__()
时应该怎么做呢?例如:
class A(Base):
def __init__(self):
...
class B(A):
def __init__(self):
...
class C(B):
def __init__(self):
...
那么如何在C.__init__()
内部调用A.__init__()
,而不调用B.__init__()
?显然,您可以在B.__init__()
和C.__init__()
中包含super().__init__()
。但是由于一些特殊的原因,我需要避免调用B.__init__()
(即在C.__init__()
内调用super().__init__()
),那么我应该怎么做呢?你知道吗
您可以直接调用上层类'init函数:
但是,跳过层次结构中的类的整个想法在将来肯定会引起问题。你知道吗
根据导致您希望这样做的原因,您可以:
太简单了。您只需要在
C
类构造函数中调用A.__init__(self)
。 例如,假设一个类是:和B类,实现了一个类:
然后可以实现如下C类:
因此,输出将是:
In[1]: obj1 = A()
In[2]: obj2 = B()
In[3]: obj3 = C()
相关问题 更多 >
编程相关推荐