python之面向对象

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)
计算器代码
 
 
 


原文地址:https://www.cnblogs.com/dongml/p/10180583.html