2017-02-09 8 views
-1
class Person(object): 
    def __init__(self, age): 
     self.age = age 
     self.ageGroup = ageGroup 


    def findAgeGroup(self): 
     if age >= 80: 
      ageGroup= "old" 
      print ageGroup 

John= Person(95) 
John.findAgeGroup 

私の質問はおそらくかなりシンプルなものです。 __init__メソッドの上のコードでは、というクラスは、Personクラスの新しいインスタンスがインスタンス化されると設定されますか? __init__メソッドの他の変数はすべてself.ageに関連しているのでそこに置かれますか?たとえば、findAgeGroupのメソッドageは、ageGroup.の値を導出するために使用されます。したがって、メソッドでself.ageGroupをリストする唯一の時間は、クラスの新しいインスタンスが作成されるときに呼び出されるself.age__init__メソッドの可変スコープですか?

+3

あなたはself.age> = 80場合は'使用する必要があります。 – martineau

+1

1. PythonのOOPチュートリアルを見直す必要があるようです。 2.このコードは 'NameError'を生成します。 – TigerhawkT3

+0

また、 'self.ageGroup = ageGroup' ageGroupで定義されていないのは と' John.findAgeGroup'です。おそらく 'John.findAgeGroup()'を意味します。 – Nullman

答えて

2

Pythonでは、実際には常に、インスタンス変数を参照するには、selfが必要です。 Javaのthis: `(と` self.ageGroup =、 ` "古い" など):

def findAgeGroup(self): 
    if self.age >= 80: 
     self.ageGroup = "old" 
     print self.ageGroup 
    # also Python prefers snake_case: self.age_group