所有Python类都应该扩展对象吗?

发布于 2021-01-29 19:35:27

我发现以下两项工作:

class Foo():
    def a(self):
        print "hello"

class Foo(object):
    def a(self):
        print "hello"

所有Python类都应该扩展对象吗?不扩展对象是否存在任何潜在问题?

关注者
0
被浏览
90
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在Python 2中,不继承自object将创建一个旧式类,除其他效果外,该类还会产生type不同的结果:

    >>> class Foo: pass
    ... 
    >>> type(Foo())
    <type 'instance'>
    

    >>> class Bar(object): pass
    ... 
    >>> type(Bar())
    <class '__main__.Bar'>
    

    同样,多重继承的规则也有所不同,在这里我什至不尝试总结。我所见过的有关MI的所有好的文档都描述了新型类。

    最终,旧式类在Python 3中消失了,并且继承自object隐式了。因此,除非您需要与旧软件向后兼容,否则请始终偏爱新样式类。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看