【发布时间】:2014-04-26 06:20:49
【问题描述】:
我定义了以下类(其中很大一部分缩短了),但我的主要问题是,一旦使用其初始化变量定义了此类的对象,我想确保这些变量在类外部是不可更改的...如果进行了这样的尝试,我将需要引发 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)
【问题讨论】:
标签: python immutability setattr