gpt4 book ai didi

python - 为什么从 python 中的对象显式子类化会导致全局 NameError 异常?

转载 作者:行者123 更新时间:2023-11-30 23:41:21 24 4
gpt4 key购买 nike

我正在使用的一些遗留代码可以工作[代码被问题重现代码替换]:

class foo:
pass

class bar(foo):
def __new__(cls):
global BIZ
if BIZ is not None:
pass

bar()

但是当我将其更改为

class foo(object):

然后 python 打印:

Traceback (most recent call last):
File "test.py", line 11, in <module>
bar()
File "test.py", line 8, in __new__
if BIZ is not None:
NameError: global name 'BIZ' is not defined

这是为什么?

最佳答案

__new__ special method仅适用于new-style classes (直接或间接从 object 继承的)。如果没有子类化object,您的代码就不会被调用。

关于python - 为什么从 python 中的对象显式子类化会导致全局 NameError 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12097845/

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