您将方法称为
self.test()。您应该在思维上进行翻译,以
test(self)了解如何在函数的定义中“接收”该调用。
test但是
deftest(),您对的定义很简单,它没有放置的
self余地,因此您得到了观察到的错误。
为什么会这样呢?因为Python只能在明确指定要查看的对象时查找属性(并且查找属性包括方法调用)。因此,为了使该方法执行依赖于调用它的对象的任何 *** 作,它需要以某种方式接收该对象。接收它的机制是第一个参数。
使用装饰器可以告诉Python
test实际上根本不需要。在那种情况下,Python知道该方法不需要,因此它不会尝试将其添加为第一个参数。因此,以下任何一种定义都可以解决您的问题:
self``staticmethod``self``test
def test(self): print('test')
要么:
@staticmethoddef test(): print('test')
请注意,这仅与在对象上调用的方法有关(总是看起来像
some_object.some_method(...))。普通函数调用(看起来像
function(...))没有任何“点的左侧”,因此没有
self,因此不会自动传递。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)