2012-05-08 22 views
2
class person(): 
    def __init__(self): 
     self.height = 3.0 
     self.weight = 240.0 
     self.temp = 99.23 

     self.statlist = [self.height, self.weight, self.temp] 

    def grow(self): 
     self.statlist[1] = self.statlist[1] + 26.0 

これにはどのような方法が最適ですか?Pythonでクラス属性をランダムに選択

問題は、これらの 'stat'属性にリストからアクセスして変更しようとしていることですが、実際に呼び出す方法がわかりません。私はこれを行う必要があるので、修正する統計をランダムに選択することができます。私はstatクラスを作るべきです、それで各statはそのクラスのインスタンスですか?

どのようなヘルプもすばらしいでしょう。

答えて

0
import random 

class person(): 
    def __init__(self): 
     self.height = 3.0 
     self.weight = 240.0 
     self.temp = 99.23 

     self.attrlist = ['height', 'weight', 'temp'] 

    def grow(self): 
     rand_attr = random.choice(self.attrlist) 
     attr_value = getattr(self, rand_attr) 
     setattr(self, rand_attr, attr_value + 26.0) 
1

使用GETATTR()とSETATTR():

import random 
class person(): 
    def __init__(self): 
     self.height = 3.0 
     self.weight = 240.0 
     self.temp = 99.23 

     self.statlist = ["height", "weight", "temp"] 

    def grow(self): 
     name = random.choice(self.statlist) 
     setattr(self, name, getattr(self, name) + 26.0) 

    def __str__(self): 
     return "%f, %f, %f" % (self.height, self.weight, self.temp) 

p = person() 
print p 
p.grow() 
print p 
p.grow() 
print p 

出力である:

3.000000, 240.000000, 99.230000 
3.000000, 266.000000, 99.230000 
3.000000, 266.000000, 125.230000 
関連する問題