Python_12 多继承与多态
Posted 甜~~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python_12 多继承与多态相关的知识,希望对你有一定的参考价值。
一、查缺补漏
1. self和super的区别:self调用自己方法,super调用父类方法
当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找
而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。
2. Alt+回车 下载包
3. 国内源地址,和镜像有关
清华:https://pypi.tuna.tsinghua.edu.cn/simple
豆瓣:https://pypi.doubanio.com/simple/
网易:https://mirrors.163.com/pypi/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
腾讯云:https://mirrors.cloud.tencent.com/pypi/simple
二、多继承
-
概念:一个类继承多个类,该类就拥有了多个类的方法和属性(私有的方法和属性除外)
-
语法:class 子类(父类1,父类2):
-
子类调用父类的方法和属性:super()方法使用和普通方法使用都遵循子类 --- 父类1 --- 父类2的查找顺序
Super()没有办法更改类继承的查找顺序,还是按照上面查找顺序查找
MRO表:表示类与类之间继承关系的图标,如果继承关系混乱有可能会报错
4. 多继承原则:不要让父类一下子是子类一下是父类,不要相互继承
三、多态:多态是指一类事务有多种形态,跟据使用情况,传入不同的参数,实现不同的功能,用在接口上的多
一些事务等同于同名的方法,相同特性的名称在不同类中展示,再根据调用不同的类结果也各不相同
四、动态设置属性(动态设置属性,增、删、改、查、判断)
_ dict _获取对象的所有属性,在类中是指实例属性,使用时展示出来的结果形似字典
-
setattr(参数1,参数2,参数3) 增加/修改属性
这里需要注意参数一也就是对象如果是对实例化对象做增加修改,
则是添加实例属性,如果对类本身增加修改,则是添加类属性
参数1:对象
参数2:属性的key
参数3:属性的value
属性存在就相当于修改
属性不存在就相当于添加属性
2. 接收值 = getattr(参数1,参数2,参数3) 获取/查询属性
参数1:对象
参数2:属性的key
参数3:非必传,value的默认值
当属性不存在的时候,会直接返回默认的value值,如果属性不存在,也没有设置value,会报错
当属性存在就返回属性对应的value
查询时可以查询类的其他属性,包括非实例属性(类属性)
3. delattr(参数1,参数2) 删除属性 只能删除类中的实例属性
参数1:对象
参数2:属性的key
4. hasattr(参数1,参数2) 判断属性是否存在
参数1:对象
参数2:属性的key
判断时可以判断类的其他属性,包括非实例属性(类属性),返回布尔值
在参数1中放类名称可以查看类属性,在参数1中放类的实例化对象可以即查看类属性又查看实例属性
本文来自博客园,作者:Alisa-sweet,转载请注明原文链接:https://www.cnblogs.com/Alisa-sweet/p/17351205.html
python6.3类的继承与多态
class Animal(object):
def __init__(self,color):
self.color=color
def eat(self):
print("动物在吃!")
def run(self):
print("动物在跑!")
class Cat(Animal):#继承Animal类
def eat(self):
print("猫在吃鱼!")
class Dog(Animal):
def __init__(self,name,age,color):
super(Dog,self).__init__(color)#调用父类的初始化方法
self.name=name
self.age=age
def eat(self):
print("狗在啃骨头!")
#类的继承
cat=Cat("黑色")
print(cat.color)
cat.eat()
cat.run()
dog=Dog("小白",7,"黑色")
dog.eat()
dog.run()
#类的多态
def feed(obj):
obj.eat()
an=Animal("黄")
cat=Cat("橘色")
dog=Dog("小黑",5,"黑色")
feed(cat)
以上是关于Python_12 多继承与多态的主要内容,如果未能解决你的问题,请参考以下文章
python 全栈 python基础 (十六)面向对象编程的 继承 多态与多态性 封装