2012-05-08 58 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'屬性並改變它們,但我真的不知道如何調用它們。我需要這樣做,所以我可以隨機選擇一個屬性進行修改。我應該製作一個統計類,以便每個統計數據都是該類的一個實例?

任何幫助將是宏偉的。

回答

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