[問題] 有關物件引入物件

作者: vvbird (vv)   2016-09-21 09:53:28
不好意思,找不到相關的資料
所以想問一下該怎麼處理
# 分數的模組
class fraction:
numerator = 0 # 分母
denominator = 1 # 分子
# (分子, 分母, 整數)
def __init__(self, denominator, numerator = 1):
self.numerator = numerator
self.denominator = denominator
def show(self):
print(self.denominator, " / ", numerator)
def eq(self, denominator, numerator = 1):
self.numerator = numerator
self.denominator = denominator
這個簡單的物件
我想要寫出一個函式,
使得可以做下列的操作
a = fraction(3, 4)
b = fraction(2, 7)
a = fraction.add(b)
也就是直接把物件 b 當成參數,造成 a = a + b 的結果
可是找不到該怎麼下這個參數的方法
目前只寫得出
a = fraction.add(b.numerator, b.denominator)
只是這樣子就很不方便
所以想問各位先進,該怎麼處理
作者: Yshuan (倚絃)   2016-09-21 10:06:00
def adder(a): return lambda b: a + b # currying ?
作者: vvbird (vv)   2016-09-21 10:34:00
我研究一下,謝謝
作者: Typebrook (Pham)   2016-09-21 14:16:00
magic function : __add__(self, fraction)http://paste.ofcode.org/FYErznr2KBbDc7rQz9ghBF然後你分子分母的英文是不是搞錯了?
作者: vvbird (vv)   2016-09-21 15:43:00
是註釋寫錯了 ..~>_<~
作者: Yshuan (倚絃)   2016-09-21 15:59:00
python走duck type 不用太強調物件本身的type吧
作者: Typebrook (Pham)   2016-09-21 16:30:00
推duck type ,若你很在意參數型態,就要自己在class內加入TypeError的檢查
作者: vvbird (vv)   2016-09-21 16:35:00
了解, 感謝...

Links booklink

Contact Us: admin [ a t ] ucptt.com