【3】Python3基础完善2

OOP-Python面向对象-章节内容:
一 : Python的面向对象
二:面向对象编程 – 基础 – 公有私有 – 继承 – 组合,Mixin
三:魔法函数(简单介绍) – 魔法函数概述 – 构造类魔法函数 – 运算类魔法函数

具体如下
1.oop思想、几个名词(oo、ooa、ood、oop、ooi)、类和对象的概念、类中的内容(属性和成员方法)

2.类的基本实现 : 命名(大驼峰)、声明(class)、实例化、访问对象成员(点操作符)、通过默认内置变量检查类和对象的所有成员(obj/class name.dict

3.anaconda基本使用:anaconda主要是一个虚拟环境管理器。例,用anaconda创建一个虚拟环境oop来运行pycharm中01.py程序。使用命令conda create -n xxx python=3.6: 创建python版本为3.6的虚拟环境,名称为xxx。

在pycharm中使用自建的虚拟环境:settings-interpreter-右上角点击“设置”符号-add-conda interpreter-选择existing env-点击“点点”更多-找到安装目录-D:\Anaconda3\envs\oop\Tools找到python.exe。

4.类和对象的成员分析:创建对象的时候,类中的成员不会放入对象当中(但是可以调用),而是得到一个空对象,没有成员。对象对类中成员重新赋值或者添加新成员时,对应的成员添加到对象中,不会修改类成员。

5.关于self:有self形参的方法是非绑定类的方法,可以通过对象访问。没有self的是绑定类的方法,只能通过类访问。 使用类访问绑定类的方法时, 如果类方法中需要访问当前类的成员,可以通过 __class__成员名来访问。 self不是关键字。

6.面向对象三大特性:封装、继承、多态

6.1 封装:对对象的成员进行访问限制。 public、protected、private,且这三个词不是关键字。

protected:一个下划线,本类及子类可以使用

private:两个下划线,只能在当前类 或 当前对象中访问

6.2.继承:所有的类都继承自object类。

继承的特性:子类继承父类后并没有将父类成员完全赋值到子类中,而是通过引用关系访问调用。 子类如果想扩充父类的方法,可以在定义新方法的同时访问父类成员来进行代码重用,可以使用 [父类名.父类成员] 的格式来调用父类成员,也可以使用super().父类成员的格式来调用

继承变量函数的查找顺序问题:优先查找自己,没有的话,则查找父类。

构造函数:注:如果子类没定义构造函数,父类的构造函数带参数,则构造对象时的参数应该按父类参数构造

super:super是一个类,与父类之间没任何实质性关系,但是可以通过super调用到父类。

单继承和多继承

菱形继承 /钻石继承:MRO(方法解析顺序)

构造函数: 构造函数一定要有,如果没有,则自动向上查找,按照MRO顺序,直到找到为止。 可以 扩展父类构造函数

6.3 多态:python中多态不是语法,而是一种设计思想。 注意区分多态和多态性。

7.Mixin设计模式:主要采用多继承方式对类的功能进行扩展。(功能的增加,但是不改变物种。比如超人物种是人,只是想单一的添加鱼的游泳功能,和鸟的飞行功能,但是不想改变物种)

使用Mixin,首先必须表示某一单一功能,而不是某个物品(如鱼的mixin:游泳。鸟的mixin:飞) – 职责必须单一,如果由多个功能,则写多个Mixin

创建和使用mixin:创建mixin时,定义一个新类。命名是xxxmixin,类名后的括号里不填参数(mixin没有父类)。类中写具体的功能。 -使用mixin时,直接继承就可以。

8.类相关函数(内置函数):issubclass、isinstance、hasattr(检测一个对象是否有成员(属性或者方法)xxx )、getattr、setattr、delattr、dir(获取对象或者类的成员列表)

9.类的成员描述符:类的成员描述符是为了在类中对类的成员属性进行相关操作而创建的一种方式(对于普通属性,人为的增加一些功能)

使用类的成员描述符,三种方法。本节介绍其中一种:使用property函数。property(fget,fset,fdel,doc)

10.类的内置属性:dict, doc , name , bases

11.类的常用魔术方法:魔术方法就是不需要人为调用的方法,在特定时刻自动触发。魔术方法的统一的特征,方法名被前后各两个下划线包裹

操作类魔术方法:init, new, call(对象实例当函数使用时,自动调用此函数), str(当对象被当做字符串使用的时候调用), repr

描述符相关的魔术函数:set, get , delete

属性操作相关的魔术函数:getattr(访问一个不存在的属性时触发), setattr(对成员属性进行设置的时候触发)

运算分类相关魔术函数:gt(进行大于判断的时候触发的函数),等其他函数

12.类和对象的三种方法:实例方法(self),静态方法(不需要参数),类方法(cls)

13.抽象类:抽象方法的主要意义是规范了子类的行为和接口。抽象类的主要作用是设定类的标准,以便于开发的时候具有统一的规范

抽象类的使用需要借助abc模块。import abc

抽象类的使用:抽象类中抽象方法,不允许直接实例化,直接用pass 。必须继承才可以使用,且继承的子类必须实现所有继承来的抽象方法 。假定子类没有实现所有继承的抽象方法,则子类也不能实例化。

14.自定义类:类其实是一个类定义和各种方法的自由组合,可以通过四种方法把单独定义的方法和类,绑定在一起使用。

(本部分是根据公开课第三章的oop部分,对之前内容进行完善。本节开始使用pycharm)

注:本文是本人根据北京图灵学院的python课程自己整理的笔记哒,转载请注明出处哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值