2013-02-08 3 views
1

Так что python является динамическим. Я должен иметь возможность добавлять атрибуты к экземплярам класса волей-неволей.Как определить анонимный тип в python

Я пытаюсь сделать это:

spam = None 
spam.eggs = [] 

Но, видимо, я не могу добавить атрибут None.

Как определить spam как экземпляр неопределенного «пустого класса», к которому я могу добавить атрибуты по мере продвижения?

+2

Нет, вы можете добавлять атрибуты типов, которые позволяют * это * объект. 'None' и' type' и 'int' нет, потому что они неизменяемы. –

+1

Почему бы не использовать dict? –

ответ

7
class Bag(object): 
    pass 

spam = Bag() 
spam.eggs = [] 
+0

Значит, мне нужно сначала определить класс? – David

+0

Да. Вы даже не можете добавлять атрибуты к экземпляру 'object'. –

+0

Что означает бит '(object)'? Почему бы не просто «классная сумка»: '? – David

3

Нет, вы можете добавлять атрибуты типов, которые позволяют ему объект. None, object, type, int et. и др. нет, потому что они неизменны.

1

В Python 3.3+, используя types.SimpleNamespace:

from types import SimpleNamespace 

spam = SimpleNamespace(eggs=[]) 
print(spam) # -> namespace(eggs=[]) 
spam.rice = {} 
print(spam) # -> namespace(eggs=[], rice={}) 
Смежные вопросы