python中的对象声明之间的关键区别是什么。括号有什么不同?
例1: 结果: TypeError:test()接受0个位置参数,但给出了1个 例2: 输出:- 测试完成 例3: 输出:python中的对象声明之间的关键区别是什么。括号有什么不同?,python,python-3.x,class,oop,object,Python,Python 3.x,Class,Oop,Object,例1: 结果: TypeError:test()接受0个位置参数,但给出了1个 例2: 输出:- 测试完成 例3: 输出: 测试完成如果您的函数不依赖于任何特定实例的状态,那么它不需要self,因此应该是@classmethod或@staticmethod,视情况而定。第一种情况:您创建了一个实例,并通过实例调用了该方法。这将调用隐式地向方法发送一个self,结果会给您一个错误警告。第二种情况:将一个变量class分配给另一个变量,然后通过它调用。因为该方法不需要一个“self”参数,所以它只是
测试完成如果您的函数不依赖于任何特定实例的状态,那么它不需要
self
,因此应该是@classmethod
或@staticmethod
,视情况而定。第一种情况:您创建了一个实例,并通过实例调用了该方法。这将调用隐式地向方法发送一个self
,结果会给您一个错误警告。第二种情况:将一个变量class
分配给另一个变量,然后通过它调用。因为该方法不需要一个“self”参数,所以它只是成为一个简单函数
第三种情况:与第一种情况相同,但您在方法中明确声明了一个self
,所以它可以正常工作。
class foo:
def test():
print("test completed")
obj = foo()
obj.test()
class foo:
def test():
print("test completed")
obj = foo
obj.test()
class foo:
def test(self):
print("test completed")
obj = foo()
obj.test()