使用参数“ self”声明类“ print”的类:
class First:
def print(self):
print('working')
return 2
尝试在不实例化类的情况下调用该方法:
First.print()
收到以下消息:
TypeError: print() missing 1 required positional argument: 'self'
现在实例化该类并访问该方法时:它正在工作。
first = First()
first.print()
# working
# 2
现在在方法print
中定义没有任何参数的同一类:
class First:
def print():
print('working')
return 2
在不实例化类的情况下调用相同的方法,它是可行的:
First.print()
# working
# 2
在没有定义方法参数的情况下,python方法的行为类似于Static。是真的还是其他?
答案 0 :(得分:0)
self
引用绑定的变量或对象。因此需要实例化。如果没有self
的方法将变为静态(Python上下文中的类方法),并且可以使用“类名”进行调用。
另外,您还应该在方法定义上方编写@classmethod
装饰器。以便明确指出它是classmethod
。
class First:
@classmethod
def print(cls):
print('working')
return 2
First.print()
供参考 https://medium.com/quick-code/understanding-self-in-python-a3704319e5f0
答案 1 :(得分:0)
在第一种情况下,它是 one 参数的函数。因此,Class.f()
失败。在第二个示例中,它是 zero 参数的函数。因此,Class.f()
有用。
创建实例时,第一个参数自动绑定到该实例,并且您需要传递n-1
参数。因此,它在您的第一个示例中有效,但在您的第二个示例中无效。