提问人:deceze 提问时间:8/31/2015 更新时间:10/28/2023 访问量:3546
将类标记为已弃用,以便在 PyCharm 中标记继承类
Marking a class as deprecated so inheriting classes are marked in PyCharm
问:
可以在 Python/PyCharm 中标记已弃用的类,如下所示:
class Foo:
def __init__(self):
warnings.warn('Use Bar instead.', DeprecationWarning)
现在尝试实例化的任何代码都将被 PyCharm 适当地标记为 Foo()。
Foo
但是,仅继承该类不会:
class Baz(Foo):
pass
有没有办法以任何方式将声明标记为弃用警告?Baz
答:
0赞
Luke Moore
1/24/2017
#1
您可以使用元类来实现此目的。在 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
0赞
hasii
10/28/2023
#2
如果要避免自定义代码,请查看已弃用的包
允许您使用批注。它维护得很好
评论