如何解决使用实现__getattr__的类的Deepcopy调试问题
我有一个类,该类的实例变量的类型为enum.Flag。它实现__getattr__
以便
我可以返回名称所给标志的布尔状态。
在不进行调试的情况下运行时,代码可以正常工作,并产生预期的输出。
但是,当我使用Visual Studio调试器(VS 2019、16.7.4,Python 3.6、64位)运行它时,它总是在__getattr__
方法中停止,我需要继续100次直到可以正常继续。我没有设置断点!
我在IDLE中测试了完全相同的代码。调试期间IDLE不会在 getattr 中停止!
我如何摆脱那些烦人的误报干扰我的调试会话?
from enum import Flag,auto
from copy import deepcopy
class MyFlags(Flag):
FOO = auto()
BAR = auto()
BAZ = auto()
class Features:
__slots__ = ('_features',)
def __init__(self,bitmask):
self._features = bitmask
@property
def bitmask(self):
return self._features
def __getattr__(self,attr):
try:
return bool(MyFlags[attr].value & self._features)
except:
raise AttributeError(attr)
f = Features(5)
print(f.bitmask)
print(f.FOO)
print(f.BAR)
print(f.BAZ)
f = Features(3)
print(f.bitmask)
print(f.FOO)
print(f.BAR)
print(f.BAZ)
g = deepcopy(f)
print(f.bitmask)
print(f.FOO)
print(f.BAR)
print(f.BAZ)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。