Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的对象声明之间的关键区别是什么。括号有什么不同?_Python_Python 3.x_Class_Oop_Object - Fatal编程技术网

python中的对象声明之间的关键区别是什么。括号有什么不同?

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”参数,所以它只是

例1:

结果: TypeError:test()接受0个位置参数,但给出了1个

例2:

输出:- 测试完成

例3:

输出:
测试完成

如果您的函数不依赖于任何特定实例的状态,那么它不需要
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()