一、编程思想
面向过程编程(典型:c语言):是一种以过程为中心的编程思想。它强调流程化、线性化、步骤化的思考方式,实现思路就是函数。
面向对象编程:强调整体性和差异性。它将任何事物看做一个统一整个,行为的多样性和多态性,还有程序可扩展性。面向对象四大特征:抽象,封装,继承,多态。
二、类和对象
类其实是一类事物的统称或概况,是一种归纳,类是对象抽象出来的概念。
对象就是现实真实存在的,可以具体来描述。
三、类的创建
语法:
class 类名:
类的属性(特征)
类的方法(行为)
说明:
- 类名称、类属性、类方法都属于python标识符,需要遵守标识符规范
- 类属性本质就是变量
- 类方法本质就是函数
1、类的构造方法
1)类中构造方法名称都是固定的。只能是 __init__ (init左右两边是双下划线),名称不可以修改。如果在类定义时候添加这个构造方法,每当创建类的对象时(类实例化),python解释器会自动调用该构造方法。构造可以包含多个参数,但是第一参数必须包含self参数。(self是python中默认写法)。
2)构造方法不能加返回值(构造方法中,不能使用return语句)。
3)当前类中是否编写构造方法,实例化类的对象时,默认都会调用构造方法。python类的构造方法有且只有一个。
4)构造方法作用:
- 用来实例化类
- 用来初始化类的属性
2、类的析构方法
析构方法作用:用于资源的回收,释放对象所占用的资源。
析构方法注意事项:
析构方法名称是固定。只能是__del__(del左右两边是双下划线),不能修改。
若在类中定义该方法,每当创建一个类的对象时,使用完成后,python解释器自动调用析构方法。
四、self的含义
self表示类实例化的对象本身,谁调用类中方法、属性,self就表示谁。
总结:
- self这个参数不需要手动进行传参,当某个对象调用方法时,python解释器会自动把该对象本身作为参数传递给self这个形参。
- self也可以改名称,self只是python中默认写法。一般都不会修改。
五、面向对象编程的三大特征
1、封装
定义:封装是隐藏对象的属性和方法实现细节,对外部仅仅提供公共访问的方式。
2、继承
继承就是子类继承父类的属性(特征)和方法(行为),使得子类具有父类的相同属性和方法。当然,子类还可有个性属性,个性方法。
继承好处:
- 继承能够提升代码的重用率,编写一个类,可以在多个子类中直接使用;
- 能够有效进行代码管理。当某个类有问题需要修改时,需要修改这个类中方法即可,其他子类无需修改。
如何实现继承?
继承是一种创建新类的方式。当我们定义一个类的时候,可以继承某个现有的类。
语法:
class 子类名称(父类名称):
pass
多继承:
子类同时可以继承多个父类。
语法:
class 子类(父类1,父类2,父类3,...):
pass
3、多态
作用:具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。
六、实例
# 对象:计算器
# 功能:+-*/清零
class Caculator:def __init__(self,a,b):self.numa=int(a)self.numb=int(b)def add(self):print(f'{self.numa}+{self.numb}={self.numa+self.numb}')def sub(self):print(f'{self.numa}-{self.numb}={self.numa-self.numb}')def mul(self):print(f'{self.numa}*{self.numb}={self.numa*self.numb}')def div(self):print(f'{self.numa}/{self.numb}={self.numa/self.numb}')def cl(self):return 0def run(self):print('欢迎使用计算器')while True:choice=int(input('请输入功能:1加2减3乘4除5清零6退出系统'))if choice==1:self.add()elif choice==2:self.sub()elif choice==3:self.mul()elif choice==4:self.div()elif choice==5:self.cl()elif choice==6:exit=input('您是否确认退出 y是,n否')if exit=='y':print('欢迎下次访问')breakelse:warn = input("您的输入非法,是否重新输入:y是,n否")if warn == "n":print("欢迎下次使用!")breakreturn Falseif __name__ == '__main__':while True:print('欢迎使用计算器')data1 = int(input('请输入第一个操作数据'))data2 = int(input('请输入第二个操作数据'))use=Caculator(data1,data2)use.run()continueexit = input('您是否确认退出 y是,n否')if exit == 'y':print('欢迎下次访问')break