一日一技:在Python中實現阿拉伯數字加上中文數字

一日一技:在Python中實現阿拉伯數字加上中文數字
(一日一技:在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)

運行效果以下圖所示:
一日一技:在Python中實現阿拉伯數字加上中文數字對象

代碼裏面,經過實現 repr,能實如今Jupyter或者Python命令行交互環境裏面輸入變量名回車就顯示變量的值。blog

經過實現 str,能實如今Python 裏面 print(變量)的時候打印出具體的值。產品

但如今還不夠,當咱們進行四則運算的時候,會報錯:
一日一技:在Python中實現阿拉伯數字加上中文數字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

運行效果以下圖所示:
一日一技:在Python中實現阿拉伯數字加上中文數字變量

可是,若是咱們把加號兩側的數字兌換一下,代碼又報錯了,以下圖所示:
一日一技:在Python中實現阿拉伯數字加上中文數字

這是因爲,當咱們執行 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

運行效果以下圖所示:
一日一技:在Python中實現阿拉伯數字加上中文數字

一樣的原理,你能夠本身實現減法 sub/rsub、乘法 mul/rmul和除法 truediv/rtruediv

kingname攢錢給產品經理買房。

相關文章
相關標籤/搜索