这样的场景你也可能遇到:调试的时候,我需要追踪某一个 Python 对象的属性变化,比如对象 someobj = SomeClass(),当 someobj 添加了一个属性( someobj.age = 14)或者修改了属性的值 (someobj.age = 18)的时候,打印这些变化。
你可能会说,简单啊,我在类 SomeClass 的定义中,添加一个魔法函数__setattr__不就可以了:
class SomeClass: def __setattr__(self, name, value): old = getattr(self, name, 'Nothing') if old == 'Nothing': print(f"New attr: {name}: {value!r}") else: print(f"Change attr: {name}: {old!r} -> {value!r}") return super().__setattr__(name, value)
这样的问题是:所有这个类的所有对象都会打印这些新增或变化信息,在日志中会看到太多的信息输出,对调试代码产生干扰。
我们要解决的问题是如何在运行中,只修改某一个对象的类?
话不多说,先看代码:
上述代码运行结果:
以上就是“如何在运行时修改某一个Python对象的类?”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/9837/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取