我认为在 python 上声明 @staticmethod 和 @classmethod 的方法是在函数的正上方添加该方法语句(@staticmethod 或 @classmethod)。
@classmethod 的用法就像实例函数,它需要一些像class或cls这样的参数(你可以改变参数名称,所以它取决于你)。
无论是@static method,它不需要像实例这样的self或类参数方法或类方法。这两个方法绑定到类而不是类的对象,因此@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
更多解释,也许你可以看到这个链接:
静态和类方法说明:link
类或静态变量说明:link
*我编辑了我的答案,因为我似乎没有回答你的问题
没有任何严格的规则/标准来安排它,幸运的是,在 python 中,你不必指定你想要定义的方法类型(在 java 中,如 public void ...或 private int ...等)。
- 类名称
首先是类的名称,然后你可以像java一样拥有属性引用和实例化。你也可以指定属性的范围(如私有等)。
- 实例化
然后你可以像java一样通过声明def __init__(self, ...)来声明实例化。如果你声明实例化,那么当你声明新的类实例时它会自动调用__init__。如果你不声明这个,python 会继续调用这个函数,因为它自动从基类继承,不会做任何事情
- 功能/方法
之后,你可以声明函数。你可以定义instance method 或@classmethod 或@staticmethod 并做一些事情。它的方法有它自己的优点,所以这取决于你如何需要它。
Python 也支持继承和多重继承。
如需进一步说明,您可以查看此链接link。
希望对你有帮助。