Python3 でクラスのいわゆる「マジック」属性または関数の多くを再定義している状況に陥っています ( __add__
、__sub__
など)。
これらすべてに対して、同じ 2 行のコードを実装します。
arg1 = self.decimal if isinstance(self, Roman) else self
arg2 = other.decimal if isinstance(other, Roman) else other
これらの行が何をするかの詳細は重要ではありませんが、コードの冗長性が気になります。これとREPLで呼び出されている間の中間にある別の「魔法の」関数はありますか?
例えば:
>> Class(9) + Class(3)
... (somewhere in python module)
... def __magicFunction__(self, rhs):
... arg1 = self.decimal if isinstance(self, Roman) else self
... arg2 = other.decimal if isinstance(other, Roman) else other
...
... THEN
...
... def __add__(self, rhs):
... return arg1 + arg2
...
12
次のようなスタックトレースを使用します。
Traceback (most recent call last):
File "< stdin>", line 1, in < module>
File "/home/module.py", line 105, in ```__magicFunction__```
File "/home/module.py", line 110, in ```__gt__```
これが理にかなっていることを願っています...