我的代码如下:
class Ball(object):
pass
ball = Ball()
dir(ball) == dir(Ball) # True
Ball.__name__ # Ball
ball.__name__ # error
为什么ball
没有__name__
的{{1}}?
答案 0 :(得分:0)
__name__
是自动在类上可用的对象,而不是对象。 Custom classes have a
特殊属性:
__name__
是类名…
而类实例没有:
特殊属性:
__dict__
是属性字典;__class__
是实例的类。
尝试
ball.__class__.__name__
答案 1 :(得分:0)
访问Ball时,它会访问。 class 中的属性,要从该类的实例访问名称,您必须使用class运算符,因此使用ball。 class 。名称
In [591]: dir(Ball.__class__)
Out[591]:
['__abstractmethods__',
'__base__',
'__bases__',
'__basicsize__',
'__call__',
'__class__',
'__delattr__',
'__dict__',
'__dictoffset__',
'__dir__',
'__doc__',
'__eq__',
'__flags__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__instancecheck__',
'__itemsize__',
'__le__',
'__lt__',
'__module__',
'__mro__',
'__name__',
'__ne__',
'__new__',
'__prepare__',
'__qualname__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasscheck__',
'__subclasses__',
'__subclasshook__',
'__text_signature__',
'__weakrefoffset__',
'mro']