python 面向对象(二)继承 多态 反射
1.单继承,基类和派生类中都存在,调用的时候优先在派生类中寻找
2.多继承,两个父类都有的方法,子类对象进行调用的时候,从左到右进行调用 :child(father,mother)
3.多重继承查找顺序

先从E里面找,找不到,去C里面找,找不到,去A里面找,找不到,去D里面找,找不到,去B里面找

先从E里面找,找不到,去C里面找,找不到,去A里面找,找不到,去D里面找,找不到,去B里面找,找不到去,o里面找
4.多态
其他语言中,函数传递参数的时候,必须指定参数的类型,要传递某一个对象,参数必须是这个对象的类,或者这个对象的类的基类。
Python中本身支持多态,参数是任意类型
扩展:
重载,函数名相同,参数的个数不同(Python不支持)
重写,派生类中重新实现基类中的方法
接口,其他语言中,定义了接口,实现这个接口时,应该对每一个方法进行重写,接口起到约束的作用 (Python 不支持)
5.执行父类的构造方法
class animal(object): def __init__(self): print('animal init func') class maoke(object): def __init__(self): print('maoke init func') class cat(animal,maoke): def __init__(self): super(cat,self).__init__() # 推荐使用这一种 执行父类的构造方法 # animal.__init__(self) #另一种执行父类的构造方法 print('cat init func') c = cat()
第一种,还是按照多继承的查找方式 来查找__init__方法,第二种,比较自由,但是很乱
5.反射
反射 类,只能找类的成员
反射 对象,即可找对象的封装的成员,也可找类中的成员
6.利用反射,导入模块,查找类,生成对象,找到属性
#导入模块 mod = __import__('classdir.s1',fromlist=True) #如果含有嵌套要添加fromlist #从模块中找类 f_class = getattr(mod,'Foo') #根据类创建对象 obj = f_class('dog') #去对象中找属性 ret = getattr(obj,'name') print(ret)

浙公网安备 33010602011771号