目的
最近我在当前项目中使用了类方法,并且我研究了‘实例’、‘类’、‘静态’方法之间的区别。因此,我决定分享这些知识。
这三种方法之间有什么区别?
实例方法:这种方法是最基本的,属于类实例。它将 self
作为第一个参数,通过它可以访问实例变量和其他实例方法。实例方法用于定义依赖于特定实例的行为。
class InstanceEx:
def __init__(self, instance_var):
self.instance_var = instance_var
def instance_method(self, number):
print(f'Instance variable: {
self.instance_var}')
instance_ex = InstanceEx(10)
instance_ex.instance_method(0) # instance var: 10
类方法: 类方法属于类本身。它使用 @classmethod
装饰器定义,并将类对象(通常命名为 cls
)作为第一个参数。即使没有类的实例,也可以调用类方法,并且对于访问类级别的数据非常有用。
class ClsEx:
class_var = 0
@classmethod
def class_method(cls):
print(f'Class variable: {
cls.class_var}')
cls.class_var += 1
ClsEx.class_method() # class var: 0
ClsEx.class_method() # class var: 1
静态方法: 静态方法不依赖于实例变量或类变量。它使用 @staticmethod
装饰器定义,并且不接受 self
或 cls
作为参数。当方法与类的实现细节密切相关但不依赖于类或其实例的状态时,静态方法非常有用。
class StaticEx:
@staticmethod
def static_method():
print('Static methods do not access class variables or instance variables.')
StaticEx