多くのリストがあり、それらの各リストの値が有効な値のセットである必要がある状況があります。ただし、有効な値のセットはリストごとに異なります。したがって、これらのリストへの追加を行う前に、メンバーシップを確認する必要があり、これにより多くのコードが繰り返されます。メンバーシップ チェックを何度も行う必要がないように、リスト オブジェクトを拡張したいと思っています。
class Attribute(list):
def __init__(self,validList):
self.valid = validList
def append(self,inString):
if inString not in self.valid:
raise Exception, '%s is not a valid value for this attribute' % inString
if inString not in self:
super(Attribute,self).append(inString)
そうすれば、リストごとに異なる有効な値のセットを持つことができます。ただし、組み込みオブジェクトを拡張することはあまり良い考えではないと感じており、過去にはそれを避けてきました。だから私の質問は
- これを行う組み込みの方法はありますか、それともすでにこのようなものを持っているライブラリがありますか?
- これは悪い考えですか?このようなことを行うと、どのような問題が発生する可能性がありますか?
Python List から継承した後に append メソッドをオーバーライドすると、このコードを機能させるのに役立ちました。