面向对象特性
对象特性,更过是对继承属性的理解,理解到位了 ,在使用特性时,才能又方便又快捷。
- 继承的概念
封装,继承,多态 富二代 继承财产 类的继承
- 封装 提高代码的重复使用 简化 方便管理
- 继承 减少代码的重复 去除两个类直接重复的代码
- 多态 基类 (object )通常默认不写
- 单继承
子类继承父类 将拥有父类的所以属性和方法 括号相当于继承
- 多继承
- 子类能继承多类
- 继承顺序
- 但是两个父类都具备相同属性也就是变量时,遵循先调取父类时从左到右
- son 找father,father 发现要回合找object的话就先找motherran后在回合到object
- 用__.mro__查找类的搜索路径也能看出
- 私有属性与方法
- 一个下划线_可以被继承
- 二个下划线__强制私有,无法被继承 不能继承,只有一个类才能拥有就是相当于父亲的指纹,别人无法拥有。
- 属性和方法无法被继承,也就是可以保证一些变量和方法只能被内部调用,不能外部使用
- 多层继承
- 本质就是嵌套继承
- 多个父类继承也是,先从子类搜索没有就搜父类,如果父类要搜到object就先搜索下一个父类再要搜到object再搜下一个父类,父类搜完最后搜索object
- 如果要父类继续嵌套,还是沿着一个父类到object,但不搜object,返回下一个开始的父类继续搜索到object,直到父类搜索完成,在搜索汇集到一起的object
- 对于父类下嵌套的多个二级父类,也是搜索到回合后,返回上一级父类再搜,都搜完了再到另一个父类,最后将汇合的object搜索
- 子类重写父类的同名方法和属性
- 重写父类的方法 覆盖父类方法
- 就是在父类下子类有独有自己特性但是拥有和父类一样名字的方法和属性
- 子类调用父类的同名方法和属性
- 在需要的情况下,子类使用父类的方法或者属性
- 平时子类用不上这个属性,但是有的时候偶尔会用到父类属性时,就要从子类中调用父类的方法和属性
- 即使获得产生相同的结果,但含义不同
- 父类自己产生对象 例如:F().love() F().相当于生成实际对象
- 子类产生的对象 例如: F.love(self)
- super()
- 调用父类的方法,只有一个父类的时候使用,拥有多个父类时,super()只能就近取值
- super()就是代替父类在子类调用时不必复杂的表示
- 调用父类的方法
- 正常直接调用父类的方法,是比较简单的
- 如果正常子类直接调用父类的内容,会报错,缺少对子类的初始化定义
- 从对子类初始化后
- 可以从父类中调用属性
- 也可直接从子类调用属性
- 这时可以用super(),简化处理 也有两种写法对super()内容的省不省略里面的(父类,self)
-
如果要输入的属性中既有属于父类的,也有转属于子类的变相,就不能单纯的init来分别初始化了,那样会报错,因为这样就只会初始化最后的变量
子类中定义的属性,可以不用在单独把所有的属性重新写一遍,父类中有的可以自动调用过来,初始化父类。 子类中定义的属性,可以不用在单独把所有的属性重新写一遍,父类中有的可以自动调用过来,初始化父类。
- 面向对象特性
- 不在定义函数中的变量属于对象的属性
- 使用的时候需要对象调用
- 将属性赋值给对象的属性
- 对于对象属性要点属性才能应用 直接在定义函数中应用,不被认可 如果想使用里面变量要self.去创建一个对象的属性才能使用
标签:01,继承,子类,编程,第八,object,调用,父类,属性 From: https://www.cnblogs.com/qipaxiaopao/p/17011512.html