2010-12-14 13 views
7

フィールドをオブジェクトに動的に追加することが可能かどうかは疑問です。Python:オブジェクトにフィールドを動的に追加する

AttributeError: 'object' object has no attribute 'first_name' 

任意のアイデア:私は、Pythonのコマンドラインインタプリタに私が得ることを実行すると

user = object() 
user.first_name = 'John' 
user.last_name = 'Smith' 

:たとえば、私のような何かを追加できるようにしたいですか?

答えて

14

これを試してみてください。私のために働いた

class Object: 
    pass 

obj = Object() 
obj.x = 5 
+0

おかげで、。私は2つの質問があります1)ここでは「合格」というキーワードはどういう意味ですか? 2)私のコードにObject()の別のインスタンスobj2がある場合、obj.xはobj2.xをいくつかの未定義の値で作成しますか? – Rafid

+1

1) 'pass'について:http://docs.python.org/tutorial/controlflow.html#pass-statements 2)いいえ、' obj.x = 5'を実行すると、 'x'属性を'Object'の単一インスタンスです。すべての 'Object'インスタンスがxを共有したい場合は、' Object.x = 5'を実行する必要があります。 – gruszczy

+0

Pythonでは未定義の値はありません。最も近い値は 'None'です。 gruszczy提案の方法で作成されたオブジェクトには、「プロトタイプ」はありません。あなたは自由に属性を追加したり削除したりでき、Objectクラスの他のインスタンスには何の影響も与えません。 –

5

objectのようなインスタンスの属性に割り当てることはできません。 objectから派生し、そのクラスのインスタンスを使用します。

関連する問題