python - 在 Python 中初始化基类中的公共属性
问题描述
我有以下抽象类的情况-有一个基类A,例如继承类B和C。B和C有一些以自己的方式初始化的属性,但是,有些属性的初始值应该相同对于所有继承的类。有没有办法在基类中初始化它们而不在每个继承的类初始化中复制代码?这是我第一次在 Python 中使用抽象类,在互联网上挖掘了几天后,我仍然找不到合适的解决方案。
例子:
class A(metaclass=ABCMeta):
@abstract_attribute
def name(self):
pass
# Value should be set as 0 initially for all the classes
#Should it be written in the base __init__ somehow?
@abstract_attribute
def value(self):
return 0
class B(A):
def __init__(self):
self.name = "class B"
self.value = 0 # this is the duplicating line
class C(A):
def __init__(self):
self.name = "class C"
self.value = 0 # this is the duplicating line
解决方案
您可以在__init__
A 类的方法中初始化值并在 B 类中调用super
内置函数:
class A():
def __init__(self):
self.value = 1
def name(self):
pass
class B(A):
def __init__(self):
super().__init__()
self.name = "class B"
b = B()
print(b.value)
打印:
1
推荐阅读
- orchardcms - 在 Orchard 中卸载模块
- google-cloud-platform - 如何让错误日志出现在堆栈驱动程序错误报告中?
- networking - NETCONF(.Yin/Yang 文件)中的 include 和 import 语句有什么区别
- mongodb - com.mongodb.connection.BufferProvider 实现的目的是什么
- java - 仅管理界面上的 Payara 服务器 SSL 错误
- c++ - 轮询 recvfrom(), sendto()
- ignite - 点燃:在缓存中放置 10 次操作时从缓存中删除数据
- python - 为什么一个功能起作用而另一个不起作用?可变性或不变性在这里如何工作?
- c++ - 除法函数返回错误值
- sqlite - 连接到 SQlite 数据库并每天提取信息