python面向对象主要有:封装,基础,多态,思想上和其他面向对象语言差不多,如Java,C#,python实现面向对象主要语法
用封装,继承,多态的方式实现计算器操作定义类语法:class name(object),所有的类基类都是继承于object
##定义计算运算父类
class BaseCalc(object):
number_one=0 #第一个数
number_two=0 #第二个数
_operators='' #私有函数,外部无法访问
##初始化方法
def __init__(self,number_one,number_two):
self.number_one=number_one
self.number_two=number_two
__init__类似于c#里的构造函数,定义参数后,在实例化的时候则要相当对应的参数,不同之处是这里的init方法只能一次
self为函数里的第一个固定参数,必填,类似于c#里的this,指的是当前类本身,参数从第二个开始计算,定义几个参数则调用时就需要传几个
##计算方法,用来进行增删改查计算
def calc(self):
return str(self.number_one)+":"+str(self.number_two)
##加法实体
class Addition(BaseCalc):
##计算方法
def calc(self):
return (int)(self.number_one)+(int)(self.number_two)
##减法实体
class Subtraction(BaseCalc):
def calc(self):
return (int)(self.number_one)-(int)(self.number_two)
##乘法实体
class Multiplication(BaseCalc):
def calc(self):
return (int)(self.number_one)*(int)(self.number_two)
##除法实体
class Division(BaseCalc):
def calc(self):
return (int)(self.number_one)/(int)(self.number_two)
运行结果
使用多态来实现:定义操作计算类Calculation
##计算操作类
class Calculation(object):
def func(self,BaseCalc):
print(BaseCalc.calc())
通过传入对应的对象来动态调用子类方法
模拟计算器,输入两个数和运算符进行计算
全部代码:
##运算父类 class BaseCalc(object): number_one=0 #第一个数 number_two=0 #第二个数 _operators='' #私有函数,外部无法访问 ##初始化方法 def __init__(self,number_one,number_two): self.number_one=number_one self.number_two=number_two ##计算方法,用来进行增删改查计算 def calc(self): return str(self.number_one)+":"+str(self.number_two) ##加法实体 class Addition(BaseCalc): ##计算方法 def calc(self): return (int)(self.number_one)+(int)(self.number_two) ##减法实体 class Subtraction(BaseCalc): def calc(self): return (int)(self.number_one)-(int)(self.number_two) ##乘法实体 class Multiplication(BaseCalc): def calc(self): return (int)(self.number_one)*(int)(self.number_two) ##除法实体 class Division(BaseCalc): def calc(self): return (int)(self.number_one)/(int)(self.number_two) ##计算操作类 class Calculation(object): def func(self,BaseCalc): print(BaseCalc.calc()) ##主函数 if __name__ == '__main__': ##实例化计算操作类 calc = Calculation() number1 = '' number2 = '' operator = '' ##只能输入数字 while not number1.isdecimal(): print('请输入第一个数:') number1 = input() #只能输入数字 while not number2.isdecimal(): print('请输入第二个数:') number2 = input() ##只能输入+-*/ while operator not in {'+', '-', '*', '/'}: print('请输入运算操作符(+,-,*,/):') operator = input() if operator == "+": calc.func(Addition(number1, number2)) elif operator == "-": calc.func(Subtraction(number1, number2)) elif operator == "*": calc.func(Multiplication(number1, number2)) else: calc.func(Division(number1, number2)) # calc = Calculation() # addition = Addition(10, 5) # calc.func(addition) ###父类输出 # basecalc= BaseCalc(10, 5) # addition = Addition(10, 5) # subtraction = Subtraction(10, 5) # multiplication = Multiplication(10, 5) # division = Division(10, 5) # print("父类输出:"+basecalc.calc()) # print("加运算输出:" + str(addition.calc())) # print("减运算:" + str(subtraction.calc())) # print("乘运算:" +str(multiplication.calc())) # print("除运算:" +str(division.calc())) #print(str(BaseCalc().calc(10,5))) # print('请输入第二个') # number2=input() # print(number1+":"+number2)