2016-04-06 7 views
0

Python'da yeniyim ve '.' kullanarak veri yapısını nasıl oluşturabilirim diye merak ediyorum. dizelerden oluşan bir dizi Verilen örnek için , Python - 'ile' bir yapı oluşturmak. Bir dizi dizeden

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

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

Yani sonuç Bunu nasıl

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

benzeyecek? Teşekkürler!

+0

(C/C++ anlamda cinsinden) struct yakın şey piton sahiptir

bir namedtuple muhtemelen kullanımı durumda çalışır bir şey olabilir. Python'un C++ yapısı yoktur. :) Sadece sınıfları var. –

+0

Dict'ta __setattr__ veya __setitem__ gibi bazı işlevlere bakıyordum. Bunlar yardımcı olmaz mı? –

+0

Evet, bu doğru. Sadece Python'un bir yapısı olmadığını, sadece sınıflara işaret ediyor. Sormadan istediğin şeyi yapabilirsin. –

cevap

3

Kullanım setattr:

class x(object): 
    pass 

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

Şimdi x.aaa gibi şeyler ve aaazzz dönmek olabilir. Nesne özniteliklerini dinamik olarak eklemenize izin verir. Sınıfınızın geri kalanını dağıtmayacağınızdan kesinlikle emin değilseniz, varolan bir sınıfın içinde kullanmaktan çok tedbirli olurdum, ama sadece kukla bir sınıf istiyorsan, bunu yapmanın iyi bir yolu.

+0

Çok teşekkür ederim, istediğim bu. –

+0

Introspection'a bakmak isteyebilirsiniz: 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]) 

Yapamazsın

+0

Bunu yapmanın başka bir yolu için teşekkürler! –