2016-11-13 89 views
2

类对象我有代码等替代在Python

class abc: 
    def __init__(self): 
     self.a = 0 
     self.b = 0 
     self.c = 0 

我提出这个类如下面的对象的数组:

objs = np.array([ abc() for x in range(10)]) 

是否有类似的可容纳的类的任何数据结构与abc类中的值a,b,c一样。另外,我可以在objs对象中完成上述数据结构的数组。 如果有人可以指导,请亲切。

+0

为什么你不希望使用一类? –

+0

我不太确定你在问什么。 “class”有什么问题?很难说,也许'collections.namedtuple'可能有帮助。 – AChampion

+0

无论如何,一个类并不是一个真正的数据结构,它是一个可以用来实现具体数据结构的编程结构。 –

回答

3

如果你正在使用Python 3.3+,您可以使用types.SimpleNamespace

>>> import types 
>>> types.SimpleNamespace(a=0, b=0, c=0) 
namespace(a=0, b=0, c=0) 

>>> obj = types.SimpleNamespace(a=0, b=0, c=0) 
>>> obj.a 
0 
>>> obj.b 
0 
>>> obj.c 
0 

在较低的版本,使用collections.namedtuple,使自定义类型。

>>> from collections import namedtuple 
>>> 
>>> abc = namedtuple('abc', 'a b c') 
>>> abc(a=0, b=0, c=0) 
abc(a=0, b=0, c=0) 

但它不允许属性设置不同types.SimpleNamespace

>>> obj = abc(a=0, b=0, c=0) 
>>> obj.a 
0 
>>> obj.a = 1 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: can't set attribute 
+0

但我有版本2.7.11。这个版本的Python有没有类的替代品? – Arshad

+0

@ user271017,我用备注更新了备选答案。 – falsetru