オブジェクトの属性追加と空のクラス

外部からのメンバ追加

Pythonにはインスタンスの属性を外部から追加したり削除することができます。

class Sample:

    def __init__(self):
        self.x = 100
        
obj = Sample()
obj.y = 200 # Sample型にyを追加することができる
print(obj.y)

del obj.x # xを削除することもできる
print(obj.x) # AttributeError: 'Sample' object has no attribute 'x'

上のコードでは、メンバ変数にxをもつSample型のオブジェクトを生成していますが、その後、属性yを追加したりもともとあったxを削除したりしています。

空のクラス

これは空のクラスに対しても行うことが可能です。

class Sample: pass # 空のクラス

obj = Sample() # 空のクラスをインスタンス化する
obj.x = 100
obj.y = 200
print(obj.x, obj.y) # 100 200

少し変わった使い方ですが、関数の戻り値で小さなオブジェクトにセットして返したい時などに利用することがあります。