2017-02-23 5 views
-1

でこのエラーを修正する方法を見つけ出すと間違っているかを把握し、この短いPythonコードを修正する方法を試してくださいカント:は、私はPythonで初心者ですPythonクラス

from time import * 
class Stopwatch: 
    def __init__(self): 
     self.reset() 
    def start(self): 
     if not self.running: 
      self.start_time = clock() 
      self.running = True 
     else: 
      print('Stopwatch already running') 
    def stop(self): 
     if self.running: 
      self.elapsed += clock() - self.start_time 
      self.running = False 
     else: 
      print('stopwatch not running') 
    def reset(self): 
     self.start_time = self.elapsed = 0 
     self.running = False 
    def elapsed(self): 
     if not self.running: 
      return self.elapsed 
     else: 
      print("stopwatch must be stopped") 
      return None 

timer = Stopwatch() 
timer.start() 
sleep(2) 
print('I am awake \n') 
timer.stop() 
print(timer.elapsed()) 

--->私はこれを取得しますTypeError: 'float'オブジェクトは呼び出し可能ではありません なぜ 'float'は呼び出し可能ではありませんか? あなたの助けをありがとう Howard

答えて

0

Stopwatchクラスには、elapsedという名前の関数があります。それはいいです。しかし、あなたがフロートするself.elapsedを設定stop方法では:あなたがtimer.elapsed()を呼び出すと

self.elapsed += clock() - self.start_time 

、Pythonはあなたが参照しているどのelapsed確認されていません。 self.elapsedをフロートに再割り当てしました。浮動小数点を関数として呼び出すことができないため、エラーが発生し、エラーがスローされます。

関数の名前を変更すると、エラーはスローされません。たとえば、

def time_elapsed(self): 
    if not self.running: 
     return self.elapsed 
    else: 
     print("stopwatch must be stopped") 
     return None 

... 

print(timer.time_elapsed()) 
関連する問題