2017-05-02 5 views
-1

以下は、私が作業している大規模なプログラムの単純化した例です。これは、いくつかの入力から単一の数値を作成し、どちらが大きいかを比較することです。この場合はコンピュータであり、そのすべての部分に番号が付いていて、それらの番号が一緒に追加されると、コンピュータの比較に使用する全体の番号が形成されます。誰かがこれを行うための最良の方法を提案することができますか?Pythonの出力を比較する

class compcomputer: 

    def __init__(self,cpu,ram,graph): 
     self.cpu = cpu 
     self.ram = ram 
     self.graph = graph 

    def __int__(self, other): 
     number = (int(0.4*self.cpu) + 0.2*int(self.ram) + 0.2*int(self.graph)) 
     return number 

computer1 = compcomputer(2,3,1) 
computer2 = compcomputer(7,3,3) 

私は私が一望できるよ簡単な解決策があると確信しているようnoobの質問のためbigger.Sorryある伝えるためにコンピュータ1とコンピュータ2の結果の数字を比較する方法を探しています。あなたの指導のために事前にありがとうございます。

+3

あなたが比較について何を意味するのですか?なぜc1> c2を使用しないのですか? – mohammad

+0

私はdef_int__の式を使って入力を実行し、それぞれの結果の数値を取得することで、 "computer2はcomputer1よりも大きい"という方法に挑戦しようとしています。 – alienmode

+0

クラス定義自体の内部で、クラスの2つのインスタンスを比較することはできません。 @mohammadが提案したように、 '__init__'メソッドの外で単純な比較を行う必要があります。 –

答えて

2

生成するインスタンス変数で動作するクラスにgtメソッドを追加することをお勧めします。このように:

class CompComputer: 

    def __init__(self,cpu,ram,graph): 
     self.cpu = cpu 
     self.ram = ram 
     self.graph = graph 
     self.score = self.generate_score() 

    def generate_score(self): 
     number = (int(0.4 *self.cpu) + 0.2 * int(self.ram) + 0.2 * int(self.graph)) 
     return number 

    def __gt__(self, other): 
     return self.score > other.score 

    def __lt__(self, other): 
     return self.score < other.score 

computer1 = CompComputer(2,3,1) 
computer2 = CompComputer(7,3,3) 

print(computer1 > computer2) 
print(computer1 < computer2) 

あなたがここにこれらのメソッドについて読むことができます。https://docs.python.org/3/reference/datamodel.html

関連する問題