我正在尝试设计我的代码,在一个Python文件中包含多个类,其中类A是类C()
和D()<的抽象类
,B 类也是 C()
和 D()
类的父类。
正如您所看到的,我正在使用 super().__init__
来初始化抽象类和父类,然后再执行这些类中的任何功能。
代码如下:
from abc import ABC, abstractmethod
class A(ABC):
def __init__(self):
print('Running A.__init__')
@abstractmethod
def function(self):
pass
class B():
def __init__(self):
print('Running B.__init__')
class C(A,B):
def __init__(self):
print('Running C.__init__')
# C.__init__()
super(C, self).__init__()
super(A,self).__init__()
def function(self):
pass
class D(A,B):
def __init__(self):
print('Running D.__init__')
super(D,self).__init__()
super(A, self).__init__()
def function(self):
pass
foo = C()
bar = D()
输出:
Running C.__init__
Running A.__init__
Running B.__init__
Running D.__init__
Running A.__init__
Running B.__init__
有兴趣学习如何避免多次初始化,简单来说,我希望抽象类 A 和父类 B 在执行 C()
或 D()
之前初始化,其中C 和 D 将继承 A 和 B 的所有功能
foo = C()
bar = D()
Running A.__init__
Running B.__init__
Running C.__init__
Running D.__init__
我最近正在尝试学习OOPS概念,如果需要重新设计代码,请帮忙。谢谢
最佳答案
在 C 或 D 中运行初始化程序代码之前,您可以通过运行 super().__init__()
来初始化父类。
即使不调用初始化函数,C 和 D 仍会继承 A 和 B 的方法。
关于python - python中继承多个类无需多次初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117765/