`__class__`变量在哪里来自方法?

时间:2016-08-24 12:15:14

标签: python python-2.7 class

我很惊讶我可以使用__class__不合格的内部方法!

*鉴于以下事实:

1)__class__未在交互式会话的全局范围或内置范围中定义

2)在Python 3.3.3和Python 2.7.11下测试

示例:

class Z: 
    def __init__(self):
        print(__class__)

在Python 3.3.3下工作,但是在使用Python 2.7.11进行测试时,这会引发经典和新式类的错误。像往常一样,当我们想要使用在类中定义的变量时,我们必须使用obj.attr。令人惊讶的是__class__它才有效!

class Z(object): 
    a = 20
    def __init__(self):
        print(__class__)
        print(a)            # doesn't work 

__class__来自哪里?

这是一个错误吗?

0 个答案:

没有答案