他のコードで既に広く使用されている Python クラス属性の名前を変更する必要がある場合があります。
問題は、さまざまな理由から、class_instance.old_attribute_name = something
. 例えば:
class theClass:
def __init__(self):
self.new_attribute_name = 0
o = theClass()
o.new_attribute_name += 3
if o.new_attribute_name > 3 or o.new_attribute_name < 4:
o.old_attribute_name = 7
do_stuff_with(o.new_attribute_name)
問題は、これを見つけるのが難しく、エラーが発生せず、役に立たない属性が作成されることです。を使用することを検討し__slot__
ましたが、私の根深い C/C++ の考え方を Python に強制するような気がします。
そこでお聞きしたいのですが、ここで何が間違っているのでしょうか? インスタンス化以外でアトリビュートの作成を (何らかの方法で) 防止しようとすると、何が失われますか? 浮遊属性の割り当てを処理するPythonicの方法は何ですか?