私は次のクラスを定義しています(その大部分は短縮されています)が、私の主な質問は、このクラスのオブジェクトが初期化された変数で定義されたら、これらの変数がクラスの外部から変更できないことを確認したいということです...このような試みが行われた場合は、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)