假设我有一个类(在python3.6中)
class Testing:
def __init__(self, stuff):
self.stuff = stuff
@staticmethod
def method_one(number):
"""My staticmethod"""
return number + 1
def method_two(self):
"""Other method"""
number = 10
# option A
self.method_one(number)
# option B
Testing.method_one(number)
这里有什么更多的python?
self
var 我倾向于认为A,但我不确定,并且找不到关于该主题的可靠答案
答案 0 :(得分:1)
事实上,在静态方法中使用self
效果不佳。因此,当您想要调用静态方法时,可以使用选项B ,class object
。
因此,调用其他方法意味着非静态就是策略:
如果两个methods
属于同一个班级,您可以使用选项A 中提到的self
。
选项B (这意味着在method
内使用class
调用class object
),您可以使用想要调用的函数在 另一个类
更新:
对于在同一个类中调用静态方法,除了self
之外,您可以使用两种方法。它们更像pythonic。
1.来自课堂的电话:classname.static_method_name()
2.来自实例的电话
这两种方式比self
更加pythonic。所以在你的情况下,选项B更加pythonic。
答案 1 :(得分:1)
在静态方法的情况下,我总是更喜欢符号B而不是符号A.主要原因是符号B告诉我一些关于如果使用符号A我不会知道的方法。
如果您使用类名而不是self
,那么读者可以立即明白他们正在处理静态方法。这样,读者就知道该方法不使用或更改类或实例状态。如果使用self
,则必须检查实际方法以查看是否使用了类或实例状态。