调用类变量时打印消息

我使用 2 python 类作为配置文件。其中一个包含旧参数(不推荐使用),如果使用了不推荐使用的参数,我想显示一条消息。

这是我如何使用不同的类:

config_backup.py

class _ConfigBackup:
    PARAM1 = 'a'
    PARAM2 = 'b'

config_new.py

class Config(_ConfigBackup):
    PARAM3 = 'c'
    PARAM4 = 'd'

cfg = Config

然后我可以调用 cfg 并得到如下结果:

>>> cfg.PARAM3
'c'
>>> cfg.PARAM1
Parameter PARAM1 is deprecated.
'a'

我认为函数或方法看起来像这样:

def warning(param):
    print(f"Parameter {param.__name__} is deprecated.")
    return param

我不确定这是否可行,也许通过使用装饰器或 with 语句,知道吗?

回答

您可以与@property装饰器一起使用的一种方法

class Config(_ConfigBackup):
    PARAM3 = 'c'
    PARAM4 = 'd'
    __PARAM1 = _ConfigBackup.PARAM1

    @property
    def PARAM1(self):
        print(f"Parameter PARAM1 is deprecated.")
        return Config.__PARAM1

cfg = Config()

print(cfg.PARAM1)
print(cfg.PARAM2)
print(cfg.PARAM3)
print(cfg.PARAM4)

输出:

Parameter PARAM1 is deprecated.
a
b
c
d

编辑:

另一种选择是修改__getattribute__

class Config(_ConfigBackup):
    PARAM3 = 'c'
    PARAM4 = 'd'

    DEPRECATED = ['PARAM1', 'PARAM2']

    def __getattribute__(self, item):
        if not item == 'DEPRECATED' and item in Config.DEPRECATED:
            print(f"Parameter {item} is deprecated.")
            return object.__getattribute__(self,item)


以上是调用类变量时打印消息的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>