2

我正在使用的一些遗留代码有效[代码替换为问题重现代码]:

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

为什么是这样?

4

1 回答 1

3

__new__特殊方法仅适用于新式类(直接或间接继承自的类object)。没有子类化object你的代码不会被调用。

于 2012-08-23T18:36:13.130 回答