Kon*_*tin 6 conventions pep8 python-3.x
我正在寻找一个约定,说明如何排列 Python 类定义中的不同类型的方法(即@staticmethod或)。PEP-8不提供有关此类主题的任何信息。@classmethod
例如,Java 编程语言有一些代码约定,涉及静态变量和实例变量在类定义块中出现的顺序。Python 3 是否有任何标准声明此类建议?
小智 -1
@staticmethod我认为在 python 上声明and的方法是在函数的正上方@classmethod添加该方法语句(@staticmethod或)。 的用法类似于实例函数,它需要一些像or之类的参数(你可以更改参数名称,因此由你决定)。无论是对于,它都不需要像实例方法或类方法那样的 self 或类参数。这两个方法绑定到类而不是类的对象,因此无法访问或修改它,因为不知道类的状态,但可以访问或修改类状态,因为它可以访问它(调用时查看 cls 参数) 但请记住,如果您通过 更改某些状态,它将更改该类的所有实例的所有状态。
您可以在下面的示例中看到差异。@classmethod@classmethodclasscls@static method@staticmethod@staticmethod@classmethod@classmethod@classmethod
例子 :
@classmethod
def something(cls, arg1, arg2, ....): #this is class method
@staticmethod
def something2(arg1, arg2, ...): #this is static method
Run Code Online (Sandbox Code Playgroud)
有关进一步的解释,也许您可以看到此链接:
静态和类方法解释:链接
类或静态变量解释:链接
*我编辑了我的答案,因为我似乎没有回答你的问题
没有任何严格的规则/标准来安排它,幸运的是在python中,你不必指定你想要定义什么类型的方法(在java中像public void ...或私有 int ...等)。
第一个顺序是类的名称,然后你可以像 java 一样拥有属性引用和实例化。您也可以指定属性的范围(如私有等)。
然后你可以像java一样通过声明来声明实例化def __init__(self, ...)。如果你声明实例化,那么当你声明新的类实例时它会自动调用__init__。如果你不声明这个,python将继续调用这个函数,因为它自动从基类继承并且不会做任何事情
之后,您可以声明函数。你可以定义instance methodor@classmethod或@staticmethodand 做某事。它的方法有它自己的优点,所以这取决于你如何需要它。
Python 也支持继承和多重继承。如需进一步说明,您可以查看此链接。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |