继承顺序
Python3 : 新式类的查找顺序:广度优先
新式类的继承:
class A(object): Python2 3 都是了
MRO算法--生成一个列表保存继承顺序表
不找到底部
Python2 中有新式类 和 经典类 Python2 默认的是经典类
经典类的继承是 深度优先
找到最深的,然后从头开始找
例子1234567891011121314151617181920212223242526272829303132class A(object): #定义新式类 def test(self): print('frome A')class B(A): def test(sel...
Python 封装
数据的封装 – 保护隐私方法的封装 – 隔离复杂度
封装其实分为两个层面,但无论哪种层面的封装,都要对外界提供好访问你内部隐藏内容的接口(接口可以理解为入口,有了这个入口,使用者无需且不能够直接访问到内部隐藏的细节,只能走接口,并且我们可以在接口的实现上附加更多的处理逻辑,从而严格控制使用者的访问)
第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装
注意:对于这一层面的封装(隐藏),类名.和实例名.就是访问隐藏属性的接口
第二个层面的封装:类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。
封装
在python中用双...
Python 继承、派生、组合、接口、抽象类
继承是一种是的关系,和组合对比,组合是一种有的关系,这两者都是解决代用重用问题的
继承
注意:继承不是遗传,在显示角度中,是通过对象抽象成类,再把这些类抽象成一个,就是父类。是自下而上的过程,在程序中是首先由父类,然后由类,之后才有对象,是自上而下的过程。
123456789101112131415class classparent1: #父类 passclass classparent2: passclass useclass1(classparent1): # 单继承 passclass useclass2(classparent1,classparent2): # 多继承 passprint(useclass1.__bases__)print(use...
Python面向对象(三)
类的使用:实例化、属性引用
实例化g1 = Garen(‘草丛伦1’) # 实例化g2 = Garen(‘草丛伦2’)g3 = Garen(‘草丛伦3’)
类的属性:变量和函数print(Garen.camp)print(Garen.attack)print(Garen.dict)
12345678910结果:{'__module__': '__main__', '**camp**': 'Demecia', 'n': 3, '__init__': <function Garen.__init__ at 0x000000000231BB70>, ...
Python列表解析与生成器表达式
Python列表解析
12l = ["egg%s" %i for i in range(100) if i > 50]print(l)
1234l= [1,2,3,4]s = 'hello'l1 = [(num,s1) for num in l for s1 in s]print(l1)
123456l1 =[]for num in l: for s1 in s: t = (num,s1) l1.append(t)print(l1)
12345678import osg = os.walk('D:\\test')l1 = [for i in g for j in i]file_path =[]for i in g: for j in i[...