使用类名调用Python静态方法更为普遍,但对于较长的类名称可能会显得不太美观。有时候我会在同一类中使用self
来调用静态方法,因为我发现这样看起来更清晰。
class ASomewhatLongButDescriptiveClassName:
def __init__(self):
# This works, but it's an eyesore
ASomewhatLongButDescriptiveClassName.do_something_static()
# This works too and looks cleaner.
self.do_something_static()
@staticmethod
def do_something_static():
print('Static method called.')
我的理解是,使用
self
调用静态方法会被解释为ClassName.static_method(self)
,其中self
将被静态方法忽略。(编辑:上述说法仅适用于实例方法,而非静态方法) 是否有任何具体原因我不应该在同一类中使用
self
来调用静态方法?
顺便说一句,这是一个姊妹问题,与Difference between calling method with self and with class name? 相关,该问题涉及非静态方法。
__init__
),那么请务必使用self
。当然,如果您想从实例外部访问该方法,则self
将没有意义,因此您必须使用完整的类名。 - SimonRfoo = ASomewhatLongButDescriptiveClassName()
,则应该通过foo.do_something_static()
访问静态方法。请注意不要更改原意,并使翻译更加通俗易懂。 - tdelaneystaticmethod
,改用普通的模块级函数。 - juanpa.arrivillaga