gpt4 book ai didi

python - python标准库中的装饰器(特别是@deprecated)

转载 作者:IT老高 更新时间:2023-10-28 21:07:23 25 4
gpt4 key购买 nike

我需要将例程标记为已弃用,但显然没有可弃用的标准库装饰器。我知道它的配方和警告模块,但我的问题是:为什么这个(常见)任务没有标准库装饰器?

附加问题:标准库中是否有标准装饰器?

最佳答案

以下是一些片段,根据 Leandro 引用的片段进行了修改:

import warnings
import functools

def deprecated(func):
"""This is a decorator which can be used to mark functions
as deprecated. It will result in a warning being emitted
when the function is used."""
@functools.wraps(func)
def new_func(*args, **kwargs):
warnings.simplefilter('always', DeprecationWarning) # turn off filter
warnings.warn("Call to deprecated function {}.".format(func.__name__),
category=DeprecationWarning,
stacklevel=2)
warnings.simplefilter('default', DeprecationWarning) # reset filter
return func(*args, **kwargs)
return new_func

# Examples

@deprecated
def some_old_function(x, y):
return x + y

class SomeClass:
@deprecated
def some_old_method(self, x, y):
return x + y

因为在某些解释器中,第一个暴露的解决方案(没有过滤器处理)可能会导致警告抑制。

关于python - python标准库中的装饰器(特别是@deprecated),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com