一日一技:在Python中實現阿拉伯數字加上中文數字
(ide
在Python 3裏面,中文是能夠做爲變量名的,而運算符又能夠重載,基於這兩個特性,咱們能夠實現阿拉伯數字與中文數字的四則運算。命令行
首先咱們定義一個類 Num:3d
class Numobject): def __init__(self, n): self.n = n def __repr__(self): return self.n def __str__(self): return str(self.n)
而後把這個類初始化爲各個中文數字:code
一 = Num(1) 五 = Num(5) 八 = Num(8)
運行效果以下圖所示:
對象
代碼裏面,經過實現 repr,能實如今Jupyter或者Python命令行交互環境裏面輸入變量名回車就顯示變量的值。blog
經過實現 str,能實如今Python 裏面 print(變量)的時候打印出具體的值。產品
但如今還不夠,當咱們進行四則運算的時候,會報錯:
it
爲了可以正常實現 一+1,咱們須要實現 add方法:class
class Num(object): def __init__(self, n): self.n = n def __repr__(self): return str(self.n) def __str__(self): return str(self.n) def __add__(self, x): return self.n + x
運行效果以下圖所示:
變量
可是,若是咱們把加號兩側的數字兌換一下,代碼又報錯了,以下圖所示:
這是因爲,當咱們執行 a+b的時候,Python會調用 a對象裏面的 add方法,因此當咱們執行 一+1的時候,調用的是 一里面的 add方法,這是咱們本身寫的,因此可以正常運行。
可是當咱們執行 1+一的時候,調用的是 1裏面的 add方法。在Python裏面,數字對象裏面的 add方法只能實現數字加數字。
可是咱們不能修改Python 內置數字的 add方法,因此咱們須要使用 radd方法。它的做用是,在 1+一執行的時候,若是 1裏面的 add運行失敗了,那麼就會調用 一里面的 radd:
class Num(object): def __init__(self, n): self.n = n def __repr__(self): return str(self.n) def __str__(self): return str(self.n) def __add__(self, x): return self.n + x def __radd__(self, x): return self.n + x
運行效果以下圖所示:
一樣的原理,你能夠本身實現減法 sub/rsub、乘法 mul/rmul和除法 truediv/rtruediv。
kingname攢錢給產品經理買房。