Python3类创建的最佳实践

2024-05-20 03:42:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

class MyClass:
    pass

class MyClass():
    pass

class MyClass(object):
    pass

但是,我没能找到推荐的方法。我应该使用哪一个作为最佳实践?在


Tags: 方法类型定义objectmyclasspassclass同义
2条回答

在python2中,有2types of classes。要使用新样式,必须显式地从object继承。如果不是,则使用旧样式的实现。在

在Python3中,所有类都隐式地扩展object,不管你自己是否这么说。在

无论如何,您可能会希望使用新样式的类,但是如果您的代码应该同时使用python 2和3,则必须显式地从对象继承:

class Foo(object):
    pass 

要跳到另一个答案,是的Zen of Python状态

Explicit is better than implicit.

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

如果您只使用python3,并且您的代码/项目明确声明,不会有任何混淆,所有没有显式继承的类都会自动从object继承。如果基类在将来由于某种模糊的原因而改变(让我们想象一下从objectobject),同样的代码也可以工作。而Zen of Python也这么说

Simple is better than complex.

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

因此,如果代码只支持python3,那么应该使用最简单的形式:

^{pr2}$

只有()的表单是非常无用的,因为它没有提供任何有价值的信息。在

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

class MyClass(object):
    pass

显式地提到您想要子类object(并且Zen of Python没有提到:“显式比隐式好。”),并且您不会遇到严重的错误,以防您(或其他人)在Python2where these statements are different中运行代码。在

相关问题 更多 >