Python 什么时候,除了使用self,函数必须是静态的?

Python 什么时候,除了使用self,函数必须是静态的?,python,conventions,convention,Python,Conventions,Convention,非常广泛的问题,可能是特定于python的 许多IDE工具(如PyCharm)建议将@staticmethod decorator添加到不包含任何self引用的函数中。是否有过这样的情况:函数即使没有对self的引用也不能是静态的?将函数声明为静态的目的是删除对self和cls参数的访问 如果函数必须引用类或对象,则它不能是静态的 否则,可以使用@staticmethod装饰函数。将函数声明为静态函数的目的是删除对self和cls参数的访问 如果函数必须引用类或对象,则它不能是静态的 否则,可以

非常广泛的问题,可能是特定于python的


许多IDE工具(如PyCharm)建议将@staticmethod decorator添加到不包含任何self引用的函数中。是否有过这样的情况:函数即使没有对self的引用也不能是静态的?

将函数声明为静态的目的是删除对self和cls参数的访问

如果函数必须引用类或对象,则它不能是静态的


否则,可以使用@staticmethod装饰函数。

将函数声明为静态函数的目的是删除对self和cls参数的访问

如果函数必须引用类或对象,则它不能是静态的


否则,可以使用@staticmethod来装饰函数。

self的存在或不存在不会使方法成为实例方法;除非用staticmethod或classmethod修饰,否则所有方法都是实例方法。一旦确定了所使用的方法的类型,第一个参数就可以假定为实例或类,或者只是一个常规参数,而不管其名称如何。@chepner在Python中声明staticmethod时,除了失去对self的访问之外,还有其他危险吗?或者这是静态方法和实例方法之间的唯一区别。您可以忽略这样一个事实,即它现在以不同的方式调用,等等。当然,如果一个方法没有self,那么这必须表明它不是一个实例方法,对吗?那么为什么PyCharm说它/可能是/一个静态方法,而不是必须是?我们需要没有self的实例方法吗?@OlafSzmidt-PyCharm告诉你它可能是一个静态方法,因为它不是强制性的,不管它使用self。这取决于你。使用不带self的实例方法的一个原因是,如果您当前没有使用实例信息,但认为将来可能需要使用。当你有一个静态的方法时要考虑的另一件事是把它移出课堂是有意义的吗?自我的存在或不存在并不使方法成为实例方法;除非用staticmethod或classmethod修饰,否则所有方法都是实例方法。一旦确定了所使用的方法的类型,第一个参数就可以假定为实例或类,或者只是一个常规参数,而不管其名称如何。@chepner在Python中声明staticmethod时,除了失去对self的访问之外,还有其他危险吗?或者这是静态方法和实例方法之间的唯一区别。您可以忽略这样一个事实,即它现在以不同的方式调用,等等。当然,如果一个方法没有self,那么这必须表明它不是一个实例方法,对吗?那么为什么PyCharm说它/可能是/一个静态方法,而不是必须是?我们需要没有self的实例方法吗?@OlafSzmidt-PyCharm告诉你它可能是一个静态方法,因为它不是强制性的,不管它使用self。这取决于你。使用不带self的实例方法的一个原因是,如果您当前没有使用实例信息,但认为将来可能需要使用。当你有一个静态方法时要考虑的另一件事是把它移出课堂是否有意义。