面向对象的三大特征介绍
1.封装,继承,多态
2.封装:把属性和方法封装在一起,并赋予权限
2.继承:子类继承父类,那么子类有父类的属性和方法
3.多态:同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果
封装
1.封装的概念:把属性和方法封装在一起,并赋予权限
2.作用:保证内部的高内聚性和与外部的低耦合性
3.私有成员:
1.外部不能直接访问,内部可以直接访问
2.在属性或方法名前面加2个下划线就表示该成员是私有的
继承介绍
1.类与类之间才能继承
2.作用:简化代码,代码复用
3.名词解释:父类(基类,超类),子类(派生类)
4.子类的小括号中写了哪个类,就表示继承了谁(认谁做爹了)
5.子类拥有父类的所有属性和方法(私有的除外)
6.继承有单继承和多继承
7.object是所有类的父类,如果一个类没有显式指明它的父类,则默认为object
单继承
单继承,就是子类继承一个父类(儿子只有一个爹)
格式:
class Father():
a=10
b=20
class Son(Father):
pass
多继承
多继承,就是子类有多个父类(儿子有多个爹)
继承规则: Python允许多继承。调用顺序:从左到右,先深度再广度
不建议使用多继承,多继承会增加代码的复杂性
格式:
父类1
class Father1():
pass
父类2
class Father2():
pass
子类
class Son(Father1,Father2)
pass
继承构造函数和析构函数问题
1.子类不写构造函数,那么会默认调用从父类继承过来的构造函数
2.如果重写了__init__ 时,要继承父类的构造方法,可以在子类构造函数中使用 super 关键字或父类名
3.析构和构造一样
子类调用父类同名方法
1.当子类的函数和父类的函数同名时,在子类的同名函数中使用super()关键字
格式:
super().test()#调用父类的同名方法
Father.test(self)#调用父类的同名方法
重写
1.什么叫重写,当子类定义了父类的同名函数时,就叫子类重写了父类的函数
2.有什么用:当从父类继承过来的方法功能不够用时,可以在子类中重写该方法
多态
1.多态:同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果
2.鸭子类型:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子
3.多个类中的成员函数名字要一样
错误和异常
错误:通常是指代码中的语法错误,一般初级程序员很常见或者说很容易犯。
异常:即便Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期间检测到的错误被称为异常
pycharm中错误常有箭头指示出来,异常没有
异常的捕获
1.捕获异常的格式:
try:#有可能出现异常的代码写在try里
print('1111111')
# print(a)
print(1 / 0)
# print(1 + 'a')
print('2222222')
except Exception as e:#捕获到了异常,执行except里的代码
print(e)
print("I'm except")
说明:Exception常规错误的基类,把异常的基本信息存储到e中
2.异常处理-except分支else:没有异常执行else下面的代码
3.finally语句:有没有异常都要执行这下面的代码
4.抛出异常:
1.raise关键字
5.自定义异常:
1.要继承Exception常规错误的基类
6.异常要处理,不管是谁
OS模块
import sys
print('===Python import mode===')
print ('命令行参数为:')
for i in sys.argv:
print (i)
print ('\n python 路径为',sys.path)
from sys import argv,path # 导入特定的成员
print('===python from import===')
print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path
import os
# path = os.getcwd()#获取当前执行文件的绝对路径•
# path = os.path.abspath('.')#获取当前路径•
# # path = os.path.abspath('..')#获取当前的父路径案例:批量修改文件名