python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python @staticmethod和@classmethod

Python标准库中内置装饰器@staticmethod和@classmethod

作者:铁松溜达py

装饰器是Python中强大而灵活的功能,用于修改或增强函数或方法的行为,本文就来介绍一下Python标准库中内置装饰器@staticmethod和@classmethod,感兴趣的可以了解一下

装饰器是Python中强大而灵活的功能,用于修改或增强函数或方法的行为。装饰器本质上是一个函数,它接受另一个函数作为参数,并返回一个新的函数,通常用于在不修改原始函数代码的情况下添加额外的功能或行为。这种技术称为元编程,它在许多Python代码中都有广泛的应用。

下面是装饰器的原理和用法:

原理:

# 定义一个装饰器函数
def my_decorator(func):
    def wrapper():
        print("在函数调用之前执行一些操作")
        func()  # 调用原始函数
        print("在函数调用之后执行一些操作")
    return wrapper
# 应用装饰器
@my_decorator
def say_hello():
    print("Hello, World!")
# 调用被装饰的函数
say_hello()
# 在函数调用之前执行一些操作
# Hello, World!
# 在函数调用之后执行一些操作
# [Finished in 625ms]
def log_decorator(func):
    def wrapper(*args, **kwargs):
        print(f"调用函数 {func.__name__},参数: {args}, {kwargs}")
        result = func(*args, **kwargs)
        print(f"函数 {func.__name__} 执行完毕,结果: {result}")
        return result
    return wrapper
@log_decorator
def add(a, b):
    return a + b
result = add(2, 3)  #装饰器会记录函数的调用和结果
# 调用函数 add,参数: (2, 3), {}
# 函数 add 执行完毕,结果: 5
# [Finished in 578ms]
import time
def performance_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"函数 {func.__name__} 执行时间: {end_time - start_time} 秒")
        return result
    return wrapper
@performance_decorator
def slow_function():
    time.sleep(2)
slow_function()
# 函数 slow_function 执行时间: 2.0054738521575928 秒

@classmethod 装饰器: # Python标准库中包含一些有用的内置装饰器

class Person:
    total_people = 0
    def __init__(self, name):
        self.name = name
        Person.total_people += 1
    @classmethod
    def get_total_people(cls):
        return cls.total_people
p1 = Person("Alice")
p2 = Person("Bob")
total = Person.get_total_people()

@staticmethod 装饰器:  #Python标准库中包含一些有用的内置装饰器

class MathUtility:
    @staticmethod
    def add(a, b):
        return a + b
result = MathUtility.add(2, 3)

这些内置装饰器允许你更灵活地定义类中的方法,静态方法用于独立于实例的操作,而类方法用于与类相关的操作。它们提供了一种方便的方式来组织和访问与类关联的函数。

到此这篇关于Python标准库中内置装饰器@staticmethod和@classmethod的文章就介绍到这了,更多相关Python @staticmethod和@classmethod内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文