2016-05-19 5 views
0

ユーザー入力と定義済みの値に基づいて、ユーザーが誰かのIDを推測するプログラムを作成しています。Python - ユーザー入力とクラスオブジェクトインスタンスの比較

class myPeople(object):

`def __init__(self, name, age, gender):` 
`self.name = name` 
`self.age = age` 
`self.gender = gender` 

name=input("What is your name?\n")

age=input("What is your age?\n")

gender=input("What is your gender?\n")

smith = myPeople(name="smith", age="104", gender="female")

john = myPeople(name="john", age="14", gender="male")

"smith"と "john"にあらかじめ割り当てられている値とユーザー入力を比較したいと思います。私は私が行うことができると考えた:

if smith.myPeople is True:

`print("You are Mr. Smith")` 

elif john.myPeople is True:

`print("You are Mr. John")` 

私はエラーはAttributeError取得しています:型オブジェクト 'をmyPeople' は属性「スミスの

を持っていませんまた、 "真である"という記述がうまくいくかどうかはわかりません。あなたの助けを前にありがとう。

+0

正確に 'smith.myPeople'が何をすると思いますか? – timgeb

答えて

0

customize your classには、comparison method, in this case __eq__を追加することができます。次に、クラスインスタンスが等しいかどうかを確認するだけです。

class myPeople(object): 
    def __init__(self, name, age, gender): 
     self.name = name 
     self.age = age 
     self.gender = gender 
    def __eq__(self, other): 
     return (self.name == other.name and 
       self.age == other.age and 
       self.gender == other.gender) 

smith = myPeople(name="smith", age="104", gender="female") 
john = myPeople(name="john", age="14", gender="male") 

>>> smith == john 
False 
>>> smith == smith 
True 
>>> john == smith 
False 
>>> john == john 
True 
>>> 

ユーザーの応答を使用して別のインスタンスを作成して比較します。

>>> name = 'smith' 
>>> age = '104' 
>>> gender = 'female' 
>>> foo = myPeople(name = name, age = age, gender = gender) 
>>> foo == smith 
True 
>>> foo == john 
False 
>>> 
関連する問題