我正在使用的一些遗留代码[代码被问题再现代码替换]:
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
为什么会这样?
答案 0 :(得分:3)
__new__
special method仅适用于new-style classes(直接或间接从object
继承的那些)。如果没有子类化object
,您的代码就不会被调用。