class Person(object):
pass
class Person:
pass
对象声明有什么作用?你应该用吗?我有两个程序都有这两个程序,并不知道它正在制造的差异。如果有人能解释这个概念,请
答案 0 :(得分:14)
在Python2中,将object
声明为基类会使类成为new-style class。否则,它是一个“经典”类。差异在于
属性仅适用于新式类
新式课程有mro
method
新式类有许多经典类缺少的属性
In [288]: class Foo: pass
In [289]: dir(Foo)
Out[289]: ['__doc__', '__module__']
In [290]: class Bar(object): pass
In [291]: dir(Bar)
Out[291]: ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
经典类仅在向后兼容性的情况下保留在Python2中。您定义的所有自定义类都应该是新式的。
在Python3中,所有类都是新式的,因此不需要在那里显式声明。
答案 1 :(得分:0)
在Python 2中,object
使其成为“新风格的类”。这意味着什么的细节并不太重要,但最重要的是你应该总是使用它,或者某些东西可能无法正常工作。
在Python 3中,一切都是新式的类,所以你不需要在那里使用object
。