2016-04-06 21 views
0

私はpythonには新しく、どうすれば '。'を使ってデータ構造体を作ることができるのだろうかと思っています。文字列の配列を与え例えば 、Python - '。'で構造体を作成する文字列の配列から

mystr=['aaa', 'bbb', 'ccc'] 
commonstr = 'zzz' 

for str in mystr 
    # something like creating '.' struct 
    self = __create_dot_struct_with_value__(self, str, str+commonstr) 

だから、結果は

self.aaa = 'aaazzz' 
self.bbb = 'bbbzzz' 
self.ccc = 'ccczzz' 

私はこれをどのように行うことができますように見えるのだろうか? ありがとう!

+0

に持っている最も近いものであるかもしれません。 PythonにはC++の構造体はありません。 :)それはクラスだけを持っています。 –

+0

私はdictの__setattr__や__setitem__のようないくつかの関数を見ていました。これらは役に立ちませんか? –

+0

はい、正しいです。 Pythonには構造体がなく、クラスだけがあることを指摘しておきます。あなたは何の問題もなく求めることができます。 –

答えて

3

使用setattr

class x(object): 
    pass 

for item in mystr: 
    setattr(x, item, item + commonstr) 

今、あなたはx.aaaのようなことを行うと、それはaaazzzを返すことができます。

setattrを使用すると、オブジェクト属性を動的に追加できます。あなたがクラスの残りの部分を混乱させることが絶対に確実でない限り、既存のクラスの中で使用することには非常に注意が必要です。しかし、ダミークラスがほしいならば、これは良い方法です。

+0

ありがとう、これは私が望んだものです! –

+0

イントロスペクションを参照することをおすすめします。http://www.ibm.com/developerworks/library/l-pyint/index.html –

1
from collections import namedtuple 
my_class = namedtuple("a_class"," ".join(mystr)) 
print my_class._make([x+"zzz" for x in mystr]) 

は、ユースケースのために働く何か

namedtupleはおそらく、Pythonはあなたがすることはできません(C/C++の意味での)struct

+0

これを行う別の方法をありがとう! –

関連する問題