问题描述
我有一个类,该类的实例变量的类型为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 (将#修改为@)