2011-11-29 12 views
17

sınıf değişken oluşturmak için ve böyle bir liste döngü tarafından bunu yapmak istiyorum:nasıl sınıf değişkenleri bir demet yapmak gerekir dinamik piton

vars=('tx','ty','tz') #plus plenty more 

class Foo(): 
    for v in vars: 
     setattr(no_idea_what_should_go_here,v,0) 

bu mümkün mü? Onları bir örnek için (__init__ içinde self kullanarak) ancak sınıf değişkenleri olarak yapmak istemiyorum. sınıf oluşturulurken dinamik değişken saklayabilir, ayrıca

class Foo(): 
    ... 

vars=('tx', 'ty', 'tz') # plus plenty more 
for v in vars: 
    setattr(Foo, v, 0) 

:

+2

Neden bunları dict'ta tutmuyorsunuz? – DrTyrsa

+0

Tez değişkenlerini farklı örnekler arasında paylaşmak ister misiniz? – luc

+0

emin değil. büyük ihtimalle. gereksinim bir API'dan geliyor ve nasıl kullanıldığını bilmiyorum. – pawel

cevap

27

Bir sınıf oluşturulduktan hemen sonra ekleme kodunu çalıştırabilir

class Bar: 
    locals()['tx'] = 'texas' 
+0

ah. çok havalı. Bir adım atacağım ve birlikte çalıştığım API'nın bunu halledip edemeyeceğini anlatacağım. teşekkürler dostum! – pawel

5

herhangi bir nedenle olursa Raymond'ın sınıf oluşturulduktan sonra onları kurma konusundaki cevabını kullanamazsın, o zaman belki de bir metaclass kullanabilirsin:

+1

'adı' '__new__' argümanı ile döngü çakışmaları için –

+0

@UszyWieloryba teşekkürler, düzeltildi – Duncan

İlgili konular