我想知道您是否在代码中使用 @staticmethod 装饰器。
就我个人而言,我不使用它,因为写 @staticmethod 比写 self 需要更多的字母。
使用它的唯一好处(对我来说)可能是代码更加清晰,但由于我通常为 sphinx 编写方法描述,所以我总是声明方法是否使用对象。
或者也许我应该开始使用 @staticmethod 装饰器?
是否使用@staticmethod
或不取决于你想要实现什么。因为有更多需要输入的内容而忽略装饰器是一个相当愚蠢的原因(无意冒犯!),并且表明您还没有理解 a 的概念静态方法在Python中!
静态方法独立于类和任何类实例。他们仅使用类范围作为命名空间。如果您省略@staticmethod
装饰器,您正在创建一个实例方法,如果不构造实例就无法使用该方法。
这是一个非常简单的类Foo
:
>>> class Foo(object):
... @staticmethod
... def foo():
... print 'foo'
...
... def bar(self):
... print 'bar'
Now, Foo.foo()
是一个静态方法,可以直接调用:
>>> Foo.foo()
foo
Foo.bar()
另一方面是实例方法,只能从以下实例(对象)调用Foo
:
>>> Foo.bar()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method foo() must be called with Foo instance as first argument (got nothing instead)
>>> foo = Foo()
>>> foo.bar()
bar
回答你的问题:如果你想定义一个静态方法,请使用@staticmethod
。否则,不要。
如果你有一个方法不使用self
,因此could如果将其编写为静态方法,请问问自己:您是否希望在没有实例的情况下从外部访问此函数?大多数时候,答案是:不。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)