码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2017-11-22 20:21:41      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:类型   pre   自带   ima   obj   class   http   继承   增强   

---恢复内容开始---

面向对象的三大特性

封装、继承、多态

继承

定义:什么是什么的关系。一个类是另一个类的子类。

   新建的类可以继承一个或多个父类(父类又称基类、超类)

   新建的类又称为(子类 、派生类)

继承分为单继承和多继承

继承的优点:减少代码的冗余,增强了代码的重用性。

继承的用法

super() 调用父类的功能和方法

1 . 在子类内部调用父类的功能和方法可以不用传入参数,直接(super().属性名)

class 父类名:
    def 属性(self):
        功能
class 子类名(父类名):
    def 属性名(self):
        super().属性名


class A:
    def aa(self):
        print(11)
class B(A):
    def aa(self):
        super().aa()
b = B()
b.aa()

 

2.在子类外部调用父类的功能和方法

必须要给super 传入两个参数,一个是子类名,一个是对象名 .属性()

class 父类名:
    def 属性(self):
        功能
class 子类名(父类名):
    pass
对象 = 子类名()
super(子类名,对象).属性()

class A:
    def aa(self):
        print(11)
class B(A):
    pass
b = B()
super(B,b),aa()

当子类和父类中有同名的方法和属性时,一定是调用自己的。

如果想要调用父类的方法和属性时,需要借用super来调用。

对象调用方法,self就会指向谁。

自己私有的方法叫做派生方法,自己私有的属性叫做派生属性

抽象与继承的关系

 

技术分享图片

抽象类和接口类

抽象类定义:

可以实现具体的某个功能,并且不支持多继承的父类

接口类定义:

不实现具体的方法并且推荐多继承的这个父类

abc模块:

用于接口类和抽象类中的一个模块ABC是Abstract Base Class

object 是所有的基类

新式类和经典类

经典类: class 父类名:  (深度优先)

新式类: class 父类名(object): (广度优先)

广度优先(一层一层的至到没有结点)

从左到右每个分支查找完毕到他们的共同父类下的子类后,在去查找下一条分支,直到共同父类下的分组查找完毕后最后在查找他们共同的父类。

技术分享图片

 

深度优先:(遍历)

从左到右每个分支查看到底,在进行下一个分支的查找,如果有共同的父类,在查找的第一个分支,就会查找这个共同的父类,然后在进行下一个分支的查找,在后面查找是不会在去查找他们共同 的父类

 技术分享图片

mro() 可以查看寻找的顺序,经典类中不能使用

多态

一种事物的多种形态叫做多态,指一个参数 的多种形态

python 是自带多态

鸭子类型:在各种数据类型之间他们没有任何的联系,但是他们拥有着一些共同的属性或者功能

 

---恢复内容结束---

面向对象

标签:类型   pre   自带   ima   obj   class   http   继承   增强   

原文地址:http://www.cnblogs.com/tianjianng/p/7875874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!