在python中使用@classmethod的用途和时间是什么?
我从来没有使用过@classmethod,也没有想到过任何使用它的例子,我知道它是如何工作的,但我不知道什么时候可以使用它在python中使用@classmethod的用途和时间是什么?,python,decorator,python-decorators,Python,Decorator,Python Decorators,我从来没有使用过@classmethod,也没有想到过任何使用它的例子,我知道它是如何工作的,但我不知道什么时候可以使用它 class Example: def __init__(self,param1,param2): self.param1 = param1 self.param2 = param2 @classmethod def my_method(cls,param1,param2): return cls(par
class Example:
def __init__(self,param1,param2):
self.param1 = param1
self.param2 = param2
@classmethod
def my_method(cls,param1,param2):
return cls(param1,param2)
example = Example.my_method(1,2)
print(example)
输出:
<__main__.Example object at 0x02EC57D0>
<__main__.Example object at 0x02EC57D0>
输出:
<__main__.Example object at 0x02EC57D0>
<__main__.Example object at 0x02EC57D0>
这是相同的结果,但我不记得何时可以使用classmethod,python中有3种方法:
- 实例方法
- 类方法
- 静态法
navy = Person.create_with_birth_year('Navy Cheng', 1989)
navy.show()
而此工厂可以继承:
zhang = Teacher.create_with_birth_year('zhang', 1980)
print(type(zhang))
和类方法可用于访问类变量:
Person.print_species()
3) 静态方法(get_birth_year)不需要特殊参数(self或cls),并且将更改类或实例的任何状态。它可以为一个类提供一些帮助函数。现在想象一下,您继承了这个类。您总是会得到一个
示例
实例,而不是子类中的实例。您的示例是classmethods(构造函数)的经典用法。使用这些方法而不是常规方法的原因是,使用它们不必初始化实例。想象一下,你的类'\uuuuu init\uuuuu
做了类似于打开网络连接或消耗某种资源的事情;您不会只想创建一个实例来创建其他实例。您可以只调用Example.my_method()
,而不需要任何实际的示例。此外,这个问题可能会有所帮助