gpt4 book ai didi

python - @staticmethod 装饰器有什么作用吗?

转载 作者:行者123 更新时间:2023-12-01 01:08:42 25 4
gpt4 key购买 nike

我做了这两门课:

class A:
@staticmethod
def f(x):
print("x is", x)

class B:
def f(x):
print("x is", x)

并像这样使用它们:

>>> A.f(1)
x is 1
>>> B.f(1)
x is 1

看起来,即使没有装饰器,f 也成为了 B 上的静态方法。为什么我需要装饰器?

最佳答案

在 Python 2 中,它曾经更重要,其中实例方法的实例性被更严格地强制执行:

>>> class B:
... def f(x):
... print("x is", x)
...
>>> B.f(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method f() must be called with B instance as first argument (
got int instance instead)

当时你必须@staticmethod来标记静态方法。

如今,@staticmethod 仍然更清楚地表明该方法是静态的,这有助于代码可读性和文档生成,并且它允许您在实例上调用该方法,而无需系统尝试绑定(bind) self

关于python - @staticmethod 装饰器有什么作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55080991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com