一文搞懂python中常用的装饰器(@classmethod、@property、@staticmethod、@abstractmethod......)
在Python中,装饰器是一种特殊的语法,用来修改或增强函数、方法或属性的行为。常用的装饰器包括 @classmethod
、@property
、@staticmethod
和 @abstractmethod
。
@classmethod
:用来修饰一个方法,使其能够作为类级别的函数被调用,而不需要先实例化对象。
class MyClass:
@classmethod
def my_class_method(cls):
print(f"This is a class method of {cls.__name__}")
MyClass.my_class_method() # 直接调用类方法
@property
:用来修饰一个方法,使其能够像访问属性一样访问方法,即通过方法的名字来调用。
class MyClass:
def __init__(self):
self._value = 0
@property
def value(self):
return self._value
@value.setter
def value(self, new_value):
self._value = new_value
obj = MyClass()
obj.value = 10 # 设置值,实质上调用的是setter方法
print(obj.value) # 获取值,实质上调用的是getter方法
@staticmethod
:用来修饰一个函数,使其不需要显式地传递self
或cls
参数。
class MyClass:
@staticmethod
def my_static_method():
print("This is a static method")
MyClass.my_static_method() # 直接调用静态方法
@abstractmethod
:这是在abc
模块中定义的一个装饰器,用于在抽象基类中定义抽象方法。
import abc
class MyAbstractClass(abc.ABC):
@abc.abstractmethod
def my_abstract_method(self):
pass
class MyConcreteClass(MyAbstractClass):
def my_abstract_method(self):
print("This is a concrete implementation of an abstract method")
# 创建一个实例会抛出TypeError,因为MyConcreteClass没有实现抽象方法
# my_object = MyConcreteClass()
以上是装饰器的简单介绍和使用示例。
评论已关闭