我创建了以下空类A
和该类的实例a
:
>>> class A:
... pass
...
>>> a = A()
据我了解,省略基类会导致该类继承自
object
。我试图用以下方法验证这一点:>>> a.__class__.__bases__
(<class 'object'>,)
因此,我还创建了
object
的实例:>>> b = object()
但是,比较
a
和b
时,我注意到使用dir
获取每个对象的属性会导致a
和b
的列表不同:>>> dir(a)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
>>> dir(b)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
a
包含b
中的每个属性,另外还有三个。仅在a
中找到的其他属性是:>>> set(dir(a)).difference(set(dir(b)))
{'__module__', '__dict__', '__weakref__'}
如果类
A
为空并从object
继承,它们从何而来? 最佳答案
即使A
为空,它仍然是用户定义的类,它与object
(必须由实现定义的类)有一些明显的区别。
关于python - 空类的实例和对象的实例之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59566440/