2013-05-11 59 views
0

我有蟒蛇類如何獲得一個類屬性,我想獲得依賴於這樣的字符串幾個屬性之一:取決於Python中的字符串

class my_class: 
    def __init__(self): 
     self.att1=1 
     self.att2=2 
     self.att3=3 

    def getatt (self, number): 
     return self.att(number) 

我怎樣才能讓這發生了嗎?

回答

5
def getatt(self, number): 
    return getattr(self, 'att%d' % number) 

或用新樣式格式:

def getatt(self, number): 
    return getattr(self, 'att{}'.format(number)) 

還要注意的是,如果你有許多屬性,你或許應該考慮存儲列表,並檢索從指數的元素。

+0

感謝您的快速幫助! – user2372478 2013-05-11 09:25:47

+0

如果對名稱有意義,而且還希望用數字查找,請查看[namedtuple](http://docs.python.org/2/library/collections.html#collections.namedtuple) – 2013-05-11 10:25:53

0

我會做類似

class My_Class: 
    def __init__(self): 
     self.att = {1: 1, 2: 2, 3: 3} 
    def getatt(self, number): 
     return self.att[number] 
    def __getattr__(self, attname): 
     if attname.startswith('att') and attname != 'att': 
      try: num = int(attname[3:]) 
      except ValueError: pass 
      else: return self.att[num] 
     raise AttributeError(attname) 

(未經測試)

有了這個,你可以訪問,如果需要將數據綁定和以及屬性。

相關問題