一,定义类
类,就是对一类事物的总称。类的具体表现被称为对象,也叫实例。(例如:汽车---->宝马)
我们可以自定义类,即创建一种新的 数据类型!
二,创建对象
类是一类事物的总称,要把它具体化,就要通过例子表达出来。这个过程被称为创建对象(对象也叫实例哦),也叫类的实例化!
三,实例变量(‘对象的变量’)
对象个体特有的‘数据’,如狗狗的名称,年龄这些。
四,构造方法(构造函数)
类中的__init__()方法是一种特殊的函数,用以创建和初始化实例变量。这就是‘构造方法’。在定义__init__()方法时,它的第一个参数必须是self,调用构造方法时不需要传入self参数。之后的参数用来初始化实例变量。
五,实例方法:在类中定义的函数(实例函数)
实例方法和实例变量一样,都是某个实例(对象)特有的方法。
定义实例方法时,第一个参数应该是self,它可以将当前对象和该方法绑定起来。这也说明该函数属于实例,调用该函数时,不需要传入值。(类似构造方法)
六,类变量
属于类的变量,不属于单个对象。
假设有一个银行账户类(account),有三个成员变量。账户金额(amount),账户名(owner)和利率(rate)。账户金额和账户名对于每一个银行账户来说都是不同的,而利率对每一个银行账户来说都是一样的!因此账户金额和账户名属于实例变量,而利率则是所有实例账户所共享的,属于类,归为’类变量’。
七,类方法
类方法和类变量相似,属于类而不属于个体实例。在定义类方法时,第一个参数不是self,而是类本身(名字)。
注意:类方法可以访问类变量和其它类方法,但不能访问实例方法和实例变量。
八,封装性
面向对象的重要特征之一。隐藏对象的内部细节,仅保留对外的接口,使用起来变得简单。就像使用计算机,不用了解内部的复杂结构,只需要知道使用鼠标,显示屏这些就足够
A封装性:私有变量
为了防止外部使用者随意存取类的内部数据(成员变量),内部数据会被封装为’私有变量’。外部调用者只能通过方法调用私有变量。
一般情况下,变量是公有的。使用者可以在类的外部使用它们。在变量前加上双下划线,即可使其变为私有变量。
B封装性:私有方法
私有方法和私有变量用法类似,都是在前面加双下划线。在类的外部不可以访问私有方法。
C封装性:使用属性(set和get方法)
外部调用者只能通过方法调用私有变量。
-----------使用属性方式修改上面的代码,更加合理------------------------
九,继承性
继承性是面向对象的重要特征之一。例如动物是一般类,称为父类;猫是特殊类。被称为子类。特殊类拥有一般类的全部数据和操作。这个也叫子类继承父类。
A继承性:继承
声明子类继承父类很简单,只需要在定义子类时在括号里写入父类的名字即可。子类继承父类时,只有公有的成员变量和方法才能被继承!
B继承性:多继承
一个子类是否有多个父类?其它编程语言不支持继承多父类,但是python可以!Python中子类在继承父类时也有优先级别。总体来说,优先继承左边的父类。例如,子类A(父类B,父类C):子类A优先继承父类B.
C继承性:方法重写(Override)
如果子类的方法和父类的方法名一样,那么子类的方法会重写(Override)父类的方法名。即以子类的方法为主,重写=覆盖。
十,多态性
多态性是面向对象的重要特征之一。多态指的是对象可以表现出多种形态。例如鸟,猫,狗子都是属于动物类。但他们叫的方式不同,动的方式也不一样,这就展现出了多态性!
A多态性:继承与多态
多个子类继承父类,并重写父类方法后,这些子类所创建的对象之间就是多态的。这些对象采用不同的方法实现父类方法。
B多态性:鸭子类型测试与多态
Python的多态性更加灵活,支持鸭子类型测试。鸭子类型测试是指:如果看到一只鸟走起路来像鸭子,游泳也像鸭子,叫声也像鸭子,那么这只鸟就可以被看成是一只鸭子。
因为支持鸭子类型测试,所以python解释器不检查发生多态的对象是否继承同一个父类。只要他们有相同的方法(行为),他们之间就是多态的。
十一,总结