2017-03-18 15 views
0

ユーザーの選択に応じて、異なる属性に対して同じ検索機能を使用したいと考えています。特定の動物を検索するときに、検索の入力パラメータを使用しようとしています。私は、印刷ではなく、ループ内でのxを使用することができるよ検索メソッドpythonの属性として入力パラメータを使用

..

は例えば、私は、xが名前に設定されている場合、ループは(animalList [I] .nameのを)属性名を使用したいですxiが年齢に設定されている場合は年齢などが含まれます。しかし、ループ内でanimalList [i] .xを使用すると、エラー "'Animal'オブジェクトに 'x'"という属性がありません。私が設定した属性をどのように使うことができますか?

あなたがやりたいのgetattr機能を使用することができます
def search(animalList, x): 
    print("What " + x +" are you searching for? ") 
    searchFor = raw_input("Answer: ") 
    i = 0 
    for djur in animalList: 
     if animalList[i].x == searchFor: 
      returnVal = "In the park we have: ", animalList[i] 
      break 
     else: 
      i += 1 
      returnVal = "No match" 
    return returnVal 

答えて

0

getattr(animalList[i], x) 

だから、それは次のようになります。

def search(animalList, x): 
    print("What " + x +" are you searching for? ") 
    searchFor = raw_input("Answer: ") 
    for animal in animalList: # this is the proper syntax for for loops 
     if getattr(animal, x) == searchFor: 
      returnVal = "In the park we have: ", animalList[i] 
      break 
     else: 
      returnVal = "No match" 
    return returnVal 

これはanimalList [i]が実際にあるという仮定の下にあります実際にxメソッドを持つ関数などです。

+0

ありがとうございました! – ulr

関連する問題