2016-11-18 5 views
1

オブジェクトをその属性と照合して取得する方法はありますか?たとえば :このコードでPythonの属性でオブジェクトを見つける方法は?

class band: 
    def __init__(self, name, number): 
    self.name = name 
    self.number = number 


rivers = band("rivers", 1) 
patrick = band("pat" , 2) 
brian = band("brian" , 3) 
scott = band("scott", 4) 

、私はバンドクラス内のオブジェクト川を見つけて、そのname属性を取得するには、番号(1を言うことができます)を使用するための方法は何ですか?

お読みいただきありがとうございました。

+0

例えば? – RomanPerekhrest

+0

はい、私はそれを意味します。 –

+0

インデントを修正します – depperm

答えて

0

このコードでは、バンドクラス内のオブジェクトの河川を見つけて名前属性を取得するために、数字を使用する方法がありますか(1と言うことができますか)?

このコードでは、 nameの値をclassプロパティに保存しないためです。あなたのクラスの構造は次のようにした場合

しかし、:

class band: 
    def __init__(self, name, number): 
     self.number = number 
     self.name = name # <--- Here is the difference 

あなたはそれを行っている可能性があります。 riverspatrickbrianscottがリストの一部であるとしましょう:リストを反復

my_list = [rivers, patrick, brian, scott] 

numberの値が1されているクラスのnameを印刷するよう:

for item in my_list: 
    if item.number == 1: 
     print item.name 
+0

申し訳ありませんが、私が現在取り組んでいるプロジェクトでこのように試してみます。 –

+0

私はself.name = nameを追加するのを忘れてしまったことを知りました。それを編集します –

0

ますこれを達成するために、辞書マッピング番号をバンドに格納することができる。あなたはクラスや他の何か*内*意味 -

クラス*から*

bands = {} 

class band: 
    def __init__(self, name, number): 
     self.number = number 
     self.name = name 
     bands[number] = self 

def getBandFromNumber(number): 
    return bands[number] 
+1

クラス変数に 'bands'をクラス変数として入れる方が良いでしょう –

関連する問題