2017-09-23 76 views
-1

我只是想...但self.value顯示錯誤ie ...我想循環self.a,self.b,self.c ...需要幫助需要學習幫助。 .....輸出想要的是x = [AA,EE,II]使用類和loops.i嘗試循環self.a,self.b,self.c使用循環.........我正在學習Python和麪向對象編程新....幫我出python中的數組處理

import string 
A = ["AA","BB","CC","DD"] 
B = ["EE","FF","GG","HH"] 
C = ["II","JJ","KK","LL"] 
class User: 
    def __init__(self,A,B,C): 
     self.a= A 
     self.b= B 
     self.c= C 

    def User1(self): 
     x=[] 
     for i in range(ord('a'), ord('c')+1): 
      value= chr(i) 
      x.append= self.(value)[0] ///for getting first elemen from A,B,C 
      i+=1 
     return x 


honey= User(A,B,C) 
print(honey.User1()) 
+1

'x.append = self。(value)[0]'沒有任何意義。要追加到列表中,您可以使用'x.append(value [0])'。你不能在這裏使用'self.value',因爲它不是一個實例屬性(或者事先將它定義爲'self.value = chr(i)')。 – roganjosh

回答

1

你想要的是使用getattr - 但也有一些其他的東西打破那裏。 (這麼開始的事實,註釋符是#在Python,而不是//序列

,您的用戶1的方法可能是這樣的:

def User1(self): 
     x=[] 
     for value in "abc": 
      x.append(getattr(self, value)[0]) 
     return x 

注意以及該for語句總是迭代一個序列,並且不需要很長的路徑就可以將序列轉換爲數字,只需將這些數字轉換回所需的元素即可。由於字符串也是一系列字符 - 只需循環「abc」將產生你想要的字母

如上所述,t他內置的getattr將從self中檢索所需的屬性,將該屬性名稱作爲字符串,包含在value變量中。

+1

@roganjosh:我只是保持它的硬編碼,讓它變得「簡單」,只需對OP進行最少的修改即可理解正在發生的事情。 我同意迭代'self .__ dict__'可以更通用 - 但必須通過解釋來做更多的事情而不是傷害。而且,如果你認爲這樣下去,或許最好一次談論Sequence協議,並且OP會一次實現'__iter__'。 – jsbueno

+0

謝謝..... getattr工作很好,謝謝................... –