Pythonの標準機能で、自由にプロパティを設定できるオブジェクトは？


Pythonの標準機能で、任意の名前で、プロパティを設定できる仕組みを教えていただけないでしょうか。  
以下のような事をしたいのですが、独自にクラスを作成しなければならないものなのでしょうか？  
他によいスマートな方法を知りたいです。

[code]

    class MyObject():  # ←わざわざ独自にクラスを作成しないで、dictのように自由にプロパティを設定したい。
        pass
    
    obj = MyObject()
    obj.x = 'AA'
    obj.y = 'BB'
    obj.z = 'CC'
    
    print(obj.x, obj.y, obj.z)
    
[/code]

dictでは、プロパティの指定に鍵カッコで囲む必要がある。  
namedtupleでは、設定可能なプロパティをあらかじめ指定しなければならない。




[`types.SimpleNamespace`](https://docs.python.org/ja/3/library/types.html#additional-
utility-classes-and-functions) が有ります。

[code]

    import types
    
    obj = types.SimpleNamespace()
    obj.x = 'AA'
    obj.y = 'BB'
    obj.z = 'CC'
    
    print(obj.x, obj.y, obj.z)  # AA BB CC
    
[/code]

* * *

頭の体操としては、下のようにすれば、クラス定義せずに（作成はするが変数に束縛はしない）1行で独自クラスのオブジェクトを生成できます。

[code]

    obj = type("NameSpace", (object,), {})()
    
[/code]




[`types.SimpleNamespace`](https://docs.python.org/ja/3/library/types.html#additional-
utility-classes-and-functions) が有ります。

[code]

    import types
    
    obj = types.SimpleNamespace()
    obj.x = 'AA'
    obj.y = 'BB'
    obj.z = 'CC'
    
    print(obj.x, obj.y, obj.z)  # AA BB CC
    
[/code]

* * *

頭の体操としては、下のようにすれば、クラス定義せずに（作成はするが変数に束縛はしない）1行で独自クラスのオブジェクトを生成できます。

[code]

    obj = type("NameSpace", (object,), {})()
    
[/code]

