我有一个名为 CacheObject 的类,许多类都从它扩展。
现在我需要在该类的所有类中添加一些通用的东西,所以我写了这个
class CacheObject(object):
def __init__(self):
self.updatedict = dict()
但子类没有获得 updatedict 属性。我知道调用 super init 函数在 python 中是可选的,但是有没有一种简单的方法可以强制所有类都添加 init 而不是遍历所有类并一一修改它们?
我所处的情况是,我希望类在调用自己的构造函数之前始终按顺序调用其基类的构造函数。以下是 Python3 代码,应该可以完成您想要的操作:
class meta(type):
def __init__(cls,name,bases,dct):
def auto__call__init__(self, *a, **kw):
for base in cls.__bases__:
base.__init__(self, *a, **kw)
cls.__init__child_(self, *a, **kw)
cls.__init__child_ = cls.__init__
cls.__init__ = auto__call__init__
class A(metaclass=meta):
def __init__(self):
print("Parent")
class B(A):
def __init__(self):
print("Child")
为了说明这一点,它的行为如下:
>>> B()
Parent
Child
<__main__.B object at 0x000001F8EF251F28>
>>> A()
Parent
<__main__.A object at 0x000001F8EF2BB2B0>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)