ばかげた質問かもしれませんが、私はJavaなどに慣れているため、なぜこれができるのかわかりません。
class A:
def __init__( self ):
pass
a = A()
a.description = "whyyy"
print a.description
whyyy
そして、私にエラーを与える代わりに、それを印刷してもらいます。
Pythonオブジェクトは動的であるため、厳密なスキーマに従う必要はありません。
クラスのインスタンスを作成すると、特定のものがすでに定義されているオブジェクトが得られますが、そのインスタンスに他のものを動的に追加することができます。元のクラス定義に制限されません。
変数には値が割り当てられることで発生し、スコープ外になると自動的に破棄されます。
オブジェクトの場合、実行時に動的に新しいフィールドを追加できます。これによってクラスの説明が変更されることはないことに注意してください。現在のインスタンスのみ。
class A:
def __init__( self ):
pass
a = A()
a.description = "whyyy"
print a.description
b = A()
print b.description # Should return an error