gpt4 book ai didi

python - 如何让子类自动调用父类__init__?

转载 作者:行者123 更新时间:2023-11-28 21:22:30 29 4
gpt4 key购买 nike

我有一个名为 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>

关于python - 如何让子类自动调用父类__init__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029634/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com