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


  • 相关阅读:
    10106 Product
    枚举值不占对象空间
    编译器会强制没有数据成员的对象长度非零
    对象切片与虚函数机制
    私有继承成员的公有化
    2013年开发者需要了解的开发趋势和技能
    redis 入门笔记
    Tomcat的异步通讯配置使用NIO
    如何成为“10倍效率的开发者”
    如何安装Node.js
  • 原文地址:https://www.cnblogs.com/dongml/p/10180583.html
Copyright © 2020-2023  润新知