我发现以下两项工作都完成了:
class Foo():
def a(self):
print "hello"
class Foo(object):
def a(self):
print "hello"
所有的Python类都应该扩展object吗?不扩展对象会有什么潜在的问题吗?
发布于 2013-03-13 08:31:30
在Python2中,不继承object
将创建一个旧式类,这会导致type
产生不同的结果:
>>> class Foo: pass
...
>>> type(Foo())
<type 'instance'>
与
>>> class Bar(object): pass
...
>>> type(Bar())
<class '__main__.Bar'>
此外,多重继承的规则是different,我甚至不想在这里进行总结。我所见过的关于MI的所有优秀文档都描述了新样式的类。
最后,旧式类在Python3中消失了,从object
继承变得隐式。所以,除非你需要向后兼容旧的软件,否则总是喜欢新风格的类。
发布于 2013-03-13 08:29:56
在Python3中,类隐式地扩展object
,无论您自己是否这样说。
在Python2中,有old-style and new-style类。要表示一个类是新样式的,您必须显式地从object
继承。如果不是,则使用旧式实现。
您通常需要一个新样式的类。显式继承自object
。请注意,这也适用于旨在与Python 2兼容的Python 3代码。
发布于 2013-03-13 08:29:15
是的,所有的Python类都应该扩展(或者说子类,这里是Python )对象。虽然通常不会发生严重的问题,但在某些情况下(如多继承树),这将是重要的。这也确保了与Python 3更好的兼容性。
https://stackoverflow.com/questions/15374857
复制相似问题