2017-07-14 9 views
-1

クラスオーバーロードを実装したいと思います。たとえば、特定の時点(例:12:59:50)のイベントが別のイベントより先に発生して出力が真または偽になる場合、単純な比較テストです。私はそれを実装しましたが、わかりましたが、これは、これが仕事を遂行するための客観的なアプローチであると言っても大変なことではありません。私はPythonには新しいので、そこに何か改善がありますか?多段階比較テストPython

おかげ

def __lt__(self, other): 
    if self.hour < other.hour: 
     return True 

    elif (self.hour == other.hour) and (self.minute < other.minute):    
     return True 

    elif (self.hour == other.hour) and (self.minute == other.minute) and (self.second < other.second):    
     return True 

    else:    
     return False 
+0

あなたは 'datetime'を使用できます –

答えて

2

タプル(および他の配列)、すでにあなたが実装されている辞書比較の種類を実行します。

def __lt__(self, other): 
    return (self.hour, self.minute, self.second) < (other.hour, other.minute, other.second) 

operatorモジュールが少しそれをクリーンアップすることができます

from operator import attrgetter 

def __lt__(self, other): 
    hms = attrgetter("hour", "minute", "second") 
    return hms(self) < hms(other) 
関連する問題