[英]Best practice for Python 3 class creation
在我的研究中,我发现在 Python 3 中这三种类型的类定义是同义词:
class MyClass:
pass
class MyClass():
pass
class MyClass(object):
pass
但是,我无法找出推荐哪种方式。 我应该使用哪一个作为最佳实践?
在 Python 2 中,有 2种类型的类。 要使用新样式,您必须从object
显式继承。 如果不是,则使用旧式实现。
在 Python 3 中,所有类都隐式地扩展object
,无论您自己是否这么说。
无论如何,您可能希望使用新式类,但如果您的代码应该与 python 2 和 3 一起使用,则必须显式继承自对象:
class Foo(object):
pass
显式优于隐式。
我认为这意味着我们应该避免在代码中可能出现的混淆,就像我们在一般语言中应该避免的那样,记住代码就是交流。
如果您只使用 python 3,并且您的代码/项目明确声明,则不会出现混淆,所有没有显式继承的类都会自动从 object 继承。 如果将来由于某种晦涩的原因改变了基类(让我们想象一下从object到Object ),相同的代码将起作用。 Python之禅也说
简单胜于复杂。
(当然,在这个例子中复杂是相当夸张的,但仍然......)
所以如果你的代码只支持 python3,你应该使用最简单的形式:
class Foo:
pass
仅包含()
的形式非常无用,因为它没有提供任何有价值的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.