一日一技:在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攒钱给产品经理买房。

相关文章
相关标签/搜索