python 第七天

构造函数,父类的构造函数带参数,则构造对象时的参数应该按照父类的构造函数格式
super 不是关键字是一个类,获取MRO列表中的第一个类
super和父类没什么关系,通过super可以调用父类
super使用的两个方法,参见父类构造函数的两个调用方法

用print(“xxxx.__mro__)看继承血统

继承多个父类不推崇
单继承:每个类只能继承一个类
优势:1.传承有序逻辑清晰简单隐患少2.功能不能无限扩展
多继承:1.类的拓展2.钻石问题和菱形问题:多个子类继承自同一个父类,这些子类被同一个类继承,于是继承关系形成了菱形
关于多继承MRO,
mro就是多继承中用于保存继承顺序的列表
python本身采用c3算法来继承进行计算
mro列表原则:

  • 子类永远在父类前
  • 多个父类,则根据继承语法括号内类的书写顺序存放
  • 多个类继承同一个父类,孙子类只选择第一个父类的继承

构造函数:进行实例化,系统自动调用的一个函数叫构造函数
注意:至少要有一个参数,self是默认的可以改成别的s但是一定要有
调用顺序:子类没有写构造函数,则自动向上查找,直到找到位置,构造函数一定要参数对应
c=C()含有一个参数
构造函数的功能扩展,有两种方法实现:1.通过父类名调用

B.__init__(self,name)再添加自己的功能
super(C,self).__init__(name)

多态
1.多态就是同一个对象在不同对象在不同情况下有不同的状态出现
多态是一种语法,不是一种设计思想
多态性:一种调用方式不同的执行效果
多态:同一事物的多种形态

MIXIN设计方式
主要采用多继承方式对类的功能进行扩展
使用mixin实现多继承的时候非常小心
首先他必须表示某一单一功能,而不是某个物品职责必须单一,如果有多个功能,则写多个mixin,mixin不能依赖于子类的实现
类相关的函数:
issubclass (B,A), B是不是A的子类,可以检查两个类的关系
isinstance (B,A), 检测一个对象是否为一个类的实例
hasattr(a,“name”)检测一个成员在不在对象里面
getattr:得到成员
setattr:设置成员
delattr:删除成员
dir:获取对象的成员列表:dir(A)
类成员描述符是为了在类中对类成员的属性而进行的相关的操作而创建的方式(数据清洗)
get:获取属性的操作
set:修改和添加属性的操作
delete:删除属性的操作
如果想使用类的成员描述符,大概有三种方法
使用类实现描述器:多个类多个属性共用一个描述符
使用属性修饰符:使用当前类中使用,可以控制一个类中一个属性
使用property函数:property函数很简单:在当前类中使用,控制一个类中多个属性
 3、使用property函数,语法是:
 property(fget, fset, fdel, doc)
 
二、类常用的内置属性,注意是类的内置属性
  dict:以字典的格式显示类的成员组成
  doc:获取类的文档信息
  name:获取类的名称,如果在模块中使用,则获取模块的名称
  bases:获取某个类的所有父类,以元祖的方式显示
类的常用魔术方法
魔术方法就是不需要人为调用的方法,在特定时刻触发
魔术方法的统一特征,方法名被前后各两个下划线包裹,
操作类,描述符相关,属性操作相关,运算分类相关

类和对象的三种方法
实例方法:需要实例化对象才能使用的方法,使用过程需要截至对象的其他对象的方法wancheng:参数为self
类方法:不需要实例化:@classmethod参数命名为cls
静态方法:不需要实例化,通过类直接访问,@staticmethod 不需要参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值