python中常见装饰器

1、 @staticmethod

将方法装饰为静态方法,可以在不创建类实例的情况下直接调用

代码示例:

class MyClass:
    @staticmethod
    def my_static_method():
        print("This is a static method.")

MyClass.my_static_method()  # 直接调用静态方法

2、@classmethod

将方法装饰为类方法,可以在不创建类实例的情况下操作类属性和调用类方法

代码示例:

class MyClass:
    class_variable = "Hello"

    @classmethod
    def my_class_method(cls):
        print(cls.class_variable)

MyClass.my_class_method()  # 调用类方法

3、@property

将方法装饰为属性方法,使其可以像访问属性一样访问

代码示例

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        self._radius = value

c = Circle(5)
print(c.radius)  # 访问属性方法
c.radius = 7     # 设置属性方法

4、 @wraps

@classmethod 和 @staticmethod 是用于装饰类的方法的装饰器,而 @wraps 是一个用于装饰函数的装饰器,它用于保留被装饰函数的元数据(如函数名、文档字符串等)

代码示例

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print("Before function call")
        result = func(*args, **kwargs)
        print("After function call")
        return result
    return wrapper

@my_decorator
def my_function():
    """This is my function"""
    print("Inside the function")

my_function()
print(my_function.__name__)        # 输出函数名:my_function
print(my_function.__doc__)         # 输出文档字符串:"This is my function"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值