Tim*_*ler 7 python class python-3.x
在我的研究中,我发现在 Python 3 中这三种类型的类定义是同义词:
class MyClass:
pass
class MyClass():
pass
class MyClass(object):
pass
Run Code Online (Sandbox Code Playgroud)
但是,我无法找出推荐哪种方式。我应该使用哪一个作为最佳实践?
我会说:使用第三个选项:
class MyClass(object):
pass
Run Code Online (Sandbox Code Playgroud)
它明确提到你想要子类化( Python 之禅object
没有提到:“显式优于隐式。”)并且如果你(或其他人)运行代码,你不会遇到讨厌的错误。 Python 2里这些语句是不同的。
在 Python 2 中,有两种类型的类。要使用新样式,您必须显式继承自object
. 如果没有,则使用旧式实现。
在 Python 3 中,所有类都object
隐式扩展,无论您自己是否这么说。
无论如何,你可能会想使用新式类,但如果你的代码应该同时适用于 python 2 和 3,你就必须显式地从 object 继承:
class Foo(object):
pass
Run Code Online (Sandbox Code Playgroud)
跳到另一个答案,是的,Python 之禅指出
显式的比隐式的好。
我认为这意味着我们应该避免代码中可能出现的混乱,就像我们在一般语言中应该避免的那样,记住代码就是沟通。
如果您只使用 python 3,并且您的代码/项目明确声明,不存在可能的混淆,所有没有显式继承的类都会自动从 object 继承。如果由于某种不明原因基类将来发生变化(让我们想象从object到Object),相同的代码将起作用。Python 之禅也说
简单总比复杂好。
(当然,在这个例子中复杂是相当夸张的,但仍然......)
因此,如果您的代码仅支持 python3,您应该使用最简单的形式:
class Foo:
pass
Run Code Online (Sandbox Code Playgroud)
带有 just 的表格()
非常无用,因为它没有提供任何有价值的信息。
归档时间: |
|
查看次数: |
2145 次 |
最近记录: |