2013-02-08 78 views
1

因此python是动态的。我应该可以将属性添加到类实例中。如何在python中定义一个匿名类型

我试图做到这一点:

spam = None 
spam.eggs = [] 

但显然我的属性不添加到None

如何定义spam为未定义的“空班”的一个实例,其作为我走,我可以添加属性?

+2

没有,你可以将属性添加到对象,该对象*允许它*类型。 'None'和'type'和'int'不会,因为它们是不可变的。 – 2013-02-08 16:32:23

+1

为什么不使用字典? – 2013-02-08 17:43:41

回答

7
class Bag(object): 
    pass 

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

所以我需要先定义一个类然后呢? – David 2013-02-08 16:31:14

+0

是的。你甚至不能将属性添加到'object'的实例。 – 2013-02-08 16:31:46

+0

“(object)”位是什么意思?为什么不只是'班袋:'? – David 2013-02-08 16:32:46

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={})