gpt4 book ai didi

python - 使用 type() 创建子类时调用父类(super class) init

转载 作者:行者123 更新时间:2023-12-04 02:04:33 25 4
gpt4 key购买 nike

我正在尝试使用 python type() 方法动态创建一个类。

所以,假设我有一个基类“A”

>>> class A:
def __init__(self):
print("I am in init of A..")

现在我使用类型方法创建一个子类“C”

>>> C = type('C',(A,),{})

当我创建一个对象时

>>> c = C()
I am in init of A..

基类的init也被正确调用了..

现在我想在我的 init 方法中做一些事情,我写了一个自定义的 init 方法..

>>> def BsInit(self):
print ("I am in init of B..")

然后我创建了一个类“B”并创建了一个实例..

>>> B = type('B',(A,),{'__init__':BsInit})
>>> b = B()
I am in init of B..

根本没有调用A类的init..

所以尝试像这样修改 BsInit 方法:

>>> def BsInit(self):
super().__init__();
print ("I am in init of B..")

创建实例时出现以下错误...

>>> B = type('B',(A,),{'__init__':BsInit})
>>> b = B()
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
b = B()
File "<pyshell#19>", line 2, in BsInit
super().__init__();print ("I am in init of B..")
RuntimeError: super(): __class__ cell not found

我找到的所有使用 type() 的自定义初始化的例子都非常简单,就像初始化一个变量..但是如果我也想调用基类 Init 怎么办??

最佳答案

你需要这样调用它:super(B, self).__init__()

关于python - 使用 type() 创建子类时调用父类(super class) init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450058/

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