gpt4 book ai didi

python - 将一个类标记为已弃用,以便在 PyCharm 中标记继承类

转载 作者:太空狗 更新时间:2023-10-29 21:59:33 25 4
gpt4 key购买 nike

可以像这样在 Python/PyCharm 中标记弃用的类:

class Foo:
def __init__(self):
warnings.warn('Use Bar instead.', DeprecationWarning)

任何试图实例化 Foo 的代码现在都会被 PyCharm 适本地标记为 Foo()

但是,仅仅继承类不会:

class Baz(Foo):
pass

有什么方法可以让 Baz声明以任何方式标记弃用警告?

最佳答案

您可以使用元类来完成此操作。在 Python 2.7 中:

import warnings

def deprecated_metaclass(message):
class DeprecatedMetaclass(type):
def __init__(cls, name, bases, dct):
if not hasattr(cls, '__metaclass__'):
cls.__metaclass__ = DeprecatedMetaclass
if any(getattr(base, '__metaclass__', None) == DeprecatedMetaclass
for base in bases):
warnings.warn(message, DeprecationWarning, stacklevel=2)
super(DeprecatedMetaclass, cls).__init__(name, bases, dct)

class Foo(object):
__metaclass__ = deprecated_metaclass('Use Bar instead.')

class Bar(Foo):
pass

请注意,在 PyCharm 之外,您可能看不到任何内容,因为弃用警告在默认情况下处于关闭状态。

在 Python 3 中,将 Foo 更改为:

class Foo(metaclass=deprecated_metaclass('Use Bar instead.')):
pass

关于python - 将一个类标记为已弃用,以便在 PyCharm 中标记继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312799/

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