2017-10-08 9 views
0

私はクラス分数を作成するはずですが、すべての関数は「魔法」です。問題は私の教授が私たちに魔法を教えてくれたことではありません。私は使用しました分数クラスpython

__init__ 

他の魔法の方法を使用したことはありません。私はこれをプログラムするのに2日間持っており、私はこのコードを構築するためのガイダンスが必要です。

https://gist.github.com/mustaa/2350807 しかし、私はそのコードで何が起こっているのか理解できない

魔法のメソッドは次のとおりです:

class Fraction: #I need it in a form like the one on github, but easier to understand 
    __init__ #construct a rational number with a given numerator and denominator 
    __add__ #add two fractions 
    __sub__ #subtract to fractions 
    __eq__ #check if 2 fractions are equal 
    __ne__ #check if 2 are not equal 
    __lt__ #check if one fraction is less than the other 
    __le__ #check if <= 
    __gt__ #check if one fraction is greater than the other 
    __ge__ #check if >= 
    __float__ #gets float representation of fraction called by float() 
    __repr__ #gets a string representation of the Fraction instance, called by str() 

私はのためのスケルトンコードを取得したら、私はここで見つける私はプログラミングするために必要なものに近いです:

class Fraction, __add__, __eq__ 

私は残りの課題を自分自身で終えることができます。

+3

私はあなたの質問からあなたの課題のためにあなたが配達することになっているか分かりません。 – roganjosh

+1

これらはすべて[公式ドキュメント](https://docs.python.org/3/reference/datamodel.html#special-method-names)で説明されています – UnholySheep

+0

Pythonの公式の 'Fraction'ファクトリ関数のコードはすべて開いていますあなたがIPython/Jupyterを使用している場合は、 'from fractions import Fraction'を実行し、' Fraction ?? 'を実行します(2つの疑問符でソースコードが表示されます)。 –

答えて

1

ここでは、無用のIntegerクラスのマジック__add____eq__メソッドを実装する方法を示します。私はそれをあなたのFractionクラスに適合させるためにあなたに任せます。

class Integer: 

    def __init__(self, value): 
     self._value = value 

    def __add__(self, other): 
     return Integer(self._value + other._value) 

    def __eq__(self, other): 
     return self._value == other._value 
+0

'__eq__'では' isinstance(other、Integer) 'を追加するのは良い考えですが、単純な例では+1です。 – Shadow

+0

@Shadowそうですね、この例は、可能な限り気を散らすものではないと考えられています。信号は魔法の一般的な書き方に関するものなので、何か他のもの(タイプチェックなど)はノイズになります。 – jacg