繁体   English   中英

Python 3 类创建的最佳实践

[英]Best practice for Python 3 class creation

在我的研究中,我发现在 Python 3 中这三种类型的类定义是同义词:

class MyClass:
    pass

class MyClass():
    pass

class MyClass(object):
    pass

但是,我无法找出推荐哪种方式。 我应该使用哪一个作为最佳实践?

我会说:使用第三个选项:

class MyClass(object):
    pass

明确提到您想要子类化objectPythonZen没有提到:“显式优于隐式。”)并且您不会遇到令人讨厌的错误,以防您(或其他人)运行代码在 Python 2 中,这些语句是不同的

在 Python 2 中,有 2种类型的类 要使用新样式,您必须从object显式继承。 如果不是,则使用旧式实现。

在 Python 3 中,所有类都隐式地扩展object ,无论您自己是否这么说。

无论如何,您可能希望使用新式类,但如果您的代码应该与 python 2 和 3 一起使用,则必须显式继承自对象:

class Foo(object):
    pass 

跳到另一个答案,是的,Python禅宗指出

显式优于隐式。

我认为这意味着我们应该避免在代码中可能出现的混淆,就像我们在一般语言中应该避免的那样,记住代码就是交流。

如果您只使用 python 3,并且您的代码/项目明确声明,则不会出现混淆,所有没有显式继承的类都会自动从 object 继承 如果将来由于某种晦涩的原因改变了基类(让我们想象一下从objectObject ),相同的代码将起作用。 Python也说

简单胜于复杂。

(当然,在这个例子中复杂是相当夸张的,但仍然......)

所以如果你的代码只支持 python3,你应该使用最简单的形式:

class Foo:
    pass

仅包含()的形式非常无用,因为它没有提供任何有价值的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM