我定义了以下类(其中很大一部分缩短了),但我的主要问题是一旦使用其初始化变量定义了此类的对象,我想确保这些变量在类外部是不可更改的......如果进行了这样的尝试,我将需要引发 AssertionError .. 我定义了setattr方法来引发此异常,但是在将这个方法放入其中之后,它会完全破坏以前的实例和测试,我一直在使用这个类进行相同的 AssertionError 每当尝试创建此类的对象...所以这里是我的类的显着简化版本。
class Interval:
compare_mode = None
def __init__(self, min, max):
self.min = min
self.max = max
def min_max(min, max = None)-> 'Interval Object':
.
.
.
return Interval(min, max)
所有其他类方法...
def __setattr__(self, name, value):
raise AssertionError('Objects in this class are immutable')
因此,一旦我尝试从此类中测试静音对象,除了使用此类中的其余方法破坏先前的测试之外,我还会遇到错误的异常..
p.min = 0; raised wrong exception(NameError)
p.max = 0; raised wrong exception(NameError)
p.HeyImChangingYourMethodandThereIsNothingYouCanDoToStopME raised wrong exception(NameError)