質問: MyCoach(5)#ここでインスタンス化? for i in range(6): print("頑張れ") mc.teach()#MyCoachのteachメソッドを呼び出したい ```
回答: `teach`がMyCoachのメソッドとして宣言されていません。 Pythonではインデントがとても重要です。 Pythonでは、あるクラスのメソッドとして関数を定義するためには、そのクラスより内側のインデントをして、メソッドを定義する必要があります。 あなたの例では `def teach():`の宣言がクラスの内側ではなくクラスと同じ階層にあるためメソッドとしてではなくグローバルな関数として認識されてしまっています。 そのためクラスの内側でteachを宣言すればよいです。 修正例: (teachメソッドのインデントの階層が変わっています) ``` class MyCoach: def __init__(self, max): self.max = 5 self.count = 0 def teach(self): #この関数のインデントをclassより内側にする if self.count < self.max:#maxで規定した値より小さければもっと強く!、規定値に達していればよしオッケーだと表示 print("もっと強く!") else: print("よしオッケーだ!") self.count += 1#ここでcount変数をインクリメントする mc = MyCoach(5)#ここでインスタンス化? for i in range(6): print("頑張れ") mc.teach()#MyCoachのteachメソッドを呼び出したい ```