Python中__name__的搜索属性策略与普通策略有何不同?



例如,我定义一个类:

class Test(object):
    pass
print dir(Test) 

得到以下结果:

['__class__','__delattr__','__dict__','__doc__','__format__','__getattribute__', '__hash__', '__init__', '__module__', '__new__','__reduce__','__reduce_ex__', '__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__']

打印测试。name获取以下结果:测试

我的问题是在Test中没有名称,为什么可以打印Test。namename;

的搜索策略是什么

任何答案将不胜感激,谢谢!

它在Test.__class__dir中,因为__name__是在type类型上定义的:

>>> Test.__name__
'Test'
>>> Test.__class__
<type 'type'>
>>> dir(Test.__class__)
[..., '__mro__', '__name__', '__ne__', ...]

如果在类(type的实例)上找不到什么,它会在类的元类(通常是type)中查找。

最新更新