7.29 多态
Posted powertips
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.29 多态相关的知识,希望对你有一定的参考价值。
多态
一种事物具备多种不同形态
水 固态 液态 气态
大黄蜂 汽车人 汽车
官方解释:多个不同类的对象可以响应同一个方法,产生不同的结果
首先强调多态不是一种特殊的语法,而是一种状态,特性(即多个不同对象可以响应同一个方法,产生不同的结果
多个对象有相同的使用方法
好处:对于使用者而言,大大的降低了使用难度
我们之前写的USB接口,下的鼠标、键盘就属于多态
实现多态的手段:鸭子类型(最简单),继承:接口;抽象类
'''
要管理 鸡 鸭 鹅
如何最方便的管理:
说同一句话,他们都能理解
他们拥有相同的方法
'''
# 下面这个也算鸭子??类型
class chicken:
def bark(self):
print('gege')
def spawn(self):
print('下鸡蛋')
class duck:
def bark(self):
print('yaay')
def spawn(self):
print('下鸭蛋')
class E:
def bark(self):
print('eeee')
def spawn(self):
print('下e蛋')
chicken = chicken() # 创建对象
duck = duck()
E = E()
def manage(obj):
obj.spawn()
manage(chicken) # 下鸡蛋
manage(duck) # 下鸭蛋
manage(E) # 下e蛋
魔法函数
isinstance
判断一个对象是否是某个类的实例
参数1 要判断的对象
参数2 要判断的类型
def add_num(a,b):
# if type(a) == int and type(b) == int:
# return a+b
# 这是我们原来的判定方法
if isinstance(a,int) and isinstance(b,int):
return a+b
# 这是使用isinstance的写法
print(add_num(5,15)) # 20
print(add_num(2,'6')) # None
issubclass
判断一个类是不是另一个类的子类
参数1 是子类
参数2 是父类
str
__str__ 会在对象被转换为字符串时
del
执行时机:手动删除对象时
使用场景:当你的对象在使用过程中,打开了不属于解释器的内容,例如文件,网络端口
call
执行时机:
____slots
该属性是一个类属性
python是动态语言
可以在运行期间,动态的修改对象的属性
如何存储更多属性?
需要开启更大的内存区域,将原始的属性赋值过去
这里有一个问题:
如果开启的容量太大
将造成内存的浪费
解决方案
Getattr stattr delattr
attr就是属性
getattr 用点访问属性石如果属性不存在时执行
setattr 用点设置属性时
delattr 用 del 对象.属性 删除属性时 执行
这几个函数反应
任何的符号 都会被解释器解释成特殊含义 例如 [ ] ( )
以上是关于7.29 多态的主要内容,如果未能解决你的问题,请参考以下文章