2010-12-14 10 views
7

Ich frage mich, ob es möglich ist, dynamisch Objekte zu Objekten hinzuzufügen. Zum Beispiel möchte ich in der Lage sein, so etwas wie hinzufügen:Python: Felder dynamisch zu Objekten hinzufügen

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

Wenn ich das in Python Kommandozeile interpretor ausführen ich:

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

Jede Idee?

Antwort

14

Try this:

class Object: 
    pass 

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

Danke, die für mich gearbeitet. Ich habe zwei Fragen 1) Was bedeutet das Schlüsselwort "pass" hier? 2) Wenn ich in meinem Code eine andere Obj2-Instanz von Object() habe, erstellt obj.x obj2.x (mit einem nicht definierten Wert)? – Rafid

+1

1) In Bezug auf 'pass': http://docs.python.org/tutorial/controlflow.html#pass-statements 2) Nein, wenn Sie' obj.x = 5', fügen Sie nur 'x' Attribut hinzu einzelne Instanz von 'Object'. Wenn Sie möchten, dass alle 'Object'-Instanzen x teilen, müssen Sie' Object.x = 5' ausführen. – gruszczy

+0

In Python gibt es keinen undefinierten Wert - der nächste, den es bekommt, ist 'None'. Objekte, die wie Gruszczy vorgeschlagen werden, haben keinen Prototyp. Sie können Attribute nach Belieben hinzufügen und löschen und haben keine Auswirkungen auf andere Instanzen der Object-Klasse. –

5

Sie können keine Attribute von object Instanzen wie folgt zuweisen. Leiten Sie von object ab, und verwenden Sie eine Instanz dieser Klasse.

Verwandte Themen