【发布时间】:2020-08-06 05:09:33
【问题描述】:
我尝试在 python 中学习静态方法。这是我的代码-
class ABC:
def __init__(self):
self.a = 10
self.b = 20
self.lst = []
@staticmethod
def addNappend(self, c):
sum = self.a + self.b + c
self.lst.append(sum)
print(self.lst)
if __name__ == '__main__':
ABC.addNappend(30)
运行代码时出错。 [TypeError: addNappend() 缺少 1 个必需的位置参数:'c']
需要改变什么?谢谢大家。
【问题讨论】:
-
如果是
@staticmethod,它不应该有参数self。参数self指的是正在调用该方法的实例——在静态方法的情况下,没有实例,所以它不应该存在。 -
我猜的一种方法是在静态方法中实例化 ABC(),然后使用实例的属性。如果你这样做,你最好使用@classmethod。
-
你不想在这里使用静态方法。
-
那么,如何从静态成员访问我的实例成员?
-
您不能从静态方法内部访问实例变量。这是静态方法的核心部分。它们用于调用函数而不需要实例化类。我建议你谷歌“静态/类方法及其目的/限制”
标签: python static-methods