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 类方法vs函数_Python_Python 3.x_Class - Fatal编程技术网

Python 类方法vs函数

Python 类方法vs函数,python,python-3.x,class,Python,Python 3.x,Class,我对类方法有点困惑: 考虑下面的例子 class A: number = 0 def add_int_n(n: int) -> int: return A.number + n @classmethod def add_int_m(cls, m: int) -> int: return cls.number + m @staticmethod def add_int_k(cls, k: int) -

我对类方法有点困惑:

考虑下面的例子

class A:
    number = 0

    def add_int_n(n: int) -> int:
        return A.number + n

    @classmethod
    def add_int_m(cls, m: int) -> int:
        return cls.number + m

    @staticmethod
    def add_int_k(cls, k: int) -> int:
        return cls.number + k

我注意到前一个和最后一个是类
函数
,而第二个是类
方法
。两者(如果有的话)的根本区别是什么?

查看此视频:我认为您可以很容易地理解差异。

@gst感谢您为我指出答案。当使用方法或函数时,您有什么最佳实践吗?如果您确实需要访问类的实例,请使用实例方法。如果没有,使用静态方法(尽管你应该考虑是否在类外使用正则函数;静态方法真的只是一个函数,它存在于类的命名空间中)。类方法用作替代构造函数;如果
A.foo
是类方法,那么
A(…)
A.foo(…)
都应该返回
A
的实例。