Zastanawiam się, czy możliwe jest dynamiczne dodawanie pól do obiektów. Na przykład, chcę, aby móc dodać coś takiego:Python: Dynamiczne dodawanie zmiennych do obiektów
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
Kiedy mogę wykonać to w linii poleceń Python tłumacza uzyskać:
AttributeError: 'object' object has no attribute 'first_name'
Każdy pomysł?
Dzięki, że pracował dla mnie. Mam dwa pytania 1) Co oznacza słowo kluczowe "pass"? 2) Jeśli mam inny obiekt obj2 Object() w moim kodzie, to czy obiekt obj.x utworzy obj2.x (z pewną nieokreśloną wartością)? – Rafid
1) Jeśli chodzi o 'pass': http://docs.python.org/tutorial/controlflow.html#pass-statements 2) Nie, jeśli robisz" obj.x = 5 ", dodajesz tylko atrybut' x' do pojedyncza instancja obiektu 'Object'. Jeśli chcesz, aby wszystkie instancje 'Object' współużytkowały x, musisz wykonać' Object.x = 5'. – gruszczy
W Pythonie nie ma czegoś takiego, jak nieokreślona wartość - najbliższy mu jest "Brak". Obiekty stworzone w sposób, jaki proponuje gruszczy, nie mają żadnego "prototypu"; możesz dowolnie dodawać i usuwać atrybuty i nie ma to wpływu na inne instancje klasy Object. –