Python 3.x Python静态方法定义

Python 3.x Python静态方法定义,python-3.x,conventions,pep8,Python 3.x,Conventions,Pep8,我正在寻找一个约定,说明Python类定义中不同类型的方法,即@staticmethod或@classmethod应该如何安排。未提供有关此类主题的任何信息 例如,Java编程语言对静态变量和实例变量在类定义块中出现的顺序有一些引用。Python 3有没有标准来声明这样的建议?我认为在Python上声明@staticmethod和@classmethod的方法是在函数的正上方添加方法语句@staticmethod或@classmethod。@classmethod的用法类似于实例函数,它需要一些

我正在寻找一个约定,说明Python类定义中不同类型的方法,即@staticmethod或@classmethod应该如何安排。未提供有关此类主题的任何信息


例如,Java编程语言对静态变量和实例变量在类定义块中出现的顺序有一些引用。Python 3有没有标准来声明这样的建议?

我认为在Python上声明@staticmethod和@classmethod的方法是在函数的正上方添加方法语句@staticmethod或@classmethod。@classmethod的用法类似于实例函数,它需要一些参数,如class或cls,u可以更改参数名,因此由u决定。无论是对于@static方法,它都不需要像instance方法或class方法那样的self或class参数。这两个方法绑定到类而不是类的对象,因此@staticmethod无法访问或修改该类,因为@staticmethod不知道该类的状态,但对于@classmethod,它可以访问或修改类状态,因为它可以访问该类状态调用@classmethod时查看cls参数,但请记住,如果您通过@classmethod更改某些状态,它将更改该类所有实例的所有状态。 你可以在下面的例子中看到不同之处

例如:

@classmethod
def something(cls, arg1, arg2, ....): #this is class method

@staticmethod
def something2(arg1, arg2, ...):   #this is static method
如需进一步解释,您可以查看以下链接: 静态和类方法说明: 类或静态变量说明:

*我编辑了我的答案,因为我似乎没有回答你的问题 没有任何严格的规则/标准来安排它,幸运的是在python中,您不必指定要在java中定义什么类型的方法,比如public void。。。或者私人内部等等

班级名称 第一个顺序是类的名称,然后可以像java一样进行属性引用和实例化。你也可以指定属性的范围,比如private等

实例化 然后你可以像java一样声明实例化,通过声明def _uinit _self。。。。如果您声明实例化,那么当您声明新的类实例时,它将自动调用uu init。如果您不声明这个,python将继续调用这个函数,因为它会自动从基类继承,并且不会做任何事情

功能/方法 之后,u可以声明函数。您可以定义实例方法或@classmethod或@staticmethod并执行某些操作。它的方法有它自己的优点,所以它取决于你需要它的方式

Python也支持继承和多重继承。 有关更多说明,请参见此链接


希望有帮助。

我认为在python上声明@staticmethod和@classmethod的方法是在函数的正上方添加方法语句@staticmethod或@classmethod。@classmethod的用法类似于实例函数,它需要一些参数,如class或cls,u可以更改参数名,因此由u决定。无论是对于@static方法,它都不需要像instance方法或class方法那样的self或class参数。这两个方法绑定到类而不是类的对象,因此@staticmethod无法访问或修改该类,因为@staticmethod不知道该类的状态,但对于@classmethod,它可以访问或修改类状态,因为它可以访问该类状态调用@classmethod时查看cls参数,但请记住,如果您通过@classmethod更改某些状态,它将更改该类所有实例的所有状态。 你可以在下面的例子中看到不同之处

例如:

@classmethod
def something(cls, arg1, arg2, ....): #this is class method

@staticmethod
def something2(arg1, arg2, ...):   #this is static method
如需进一步解释,您可以查看以下链接: 静态和类方法说明: 类或静态变量说明:

*我编辑了我的答案,因为我似乎没有回答你的问题 没有任何严格的规则/标准来安排它,幸运的是在python中,您不必指定要在java中定义什么类型的方法,比如public void。。。或者私人内部等等

班级名称 第一个顺序是类的名称,然后可以像java一样进行属性引用和实例化。你也可以指定属性的范围,比如private等

实例化 然后你可以像java一样声明实例化,通过声明def _uinit _self。。。。如果您声明实例化,那么当您声明新的类实例时,它将自动调用uu init。如果您不声明这个,python将继续调用这个函数,因为它会自动从基类继承,并且不会做任何事情

功能/方法 之后,u可以声明函数。您可以定义实例方法或@classmethod或@staticmethod并执行某些操作。它的方法有它自己的优点,所以它取决于你需要它的方式

Python也支持继承和多重继承。 有关更多说明,请参见此链接


希望能有所帮助。

问题不在于
decorator使一个方法成为类或静态方法。问题是如何在一个类语句中对不同的方法类型进行排序,而不是装饰器去哪里使一个方法成为类或静态方法。问题是如何在类语句中对不同的方法类型进行排序。