我的代码如下:
class Ball(object):
pass
ball = Ball()
dir(ball) == dir(Ball) # True
Ball.__name__ # Ball
ball.__name__ # error
为什么ball
没有__name__
的{{1}}?
我的代码如下:
class Ball(object):
pass
ball = Ball()
dir(ball) == dir(Ball) # True
Ball.__name__ # Ball
ball.__name__ # error
为什么ball
没有__name__
的{{1}}?
__name__
是自动在类上可用的对象,而不是对象。 Custom classes have a
特殊属性:
__name__
是类名…
而类实例没有:
特殊属性:
__dict__
是属性字典;__class__
是实例的类。
尝试
ball.__class__.__name__
,
访问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']