Python面向对象

一、面向对象简介
类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量:类变量在整个实例化的对象中是共用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用。
数据成员:类变量或者实例变量用来处理类及其实例对象的相关数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫做方法的覆盖(override)或者方法的重写。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的,这种变量就是实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承:即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象来对待。
实例化:创建一个类的实例,类的具体对象。
方法:类中定义的函数。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量与实例变量)和方法。
二、详情
面向对象编程是一种编程方式,此编程方式的实现需要类与对象的结合使用。即面向对象编程就是对类与对象的使用。
类就是一个模板,模板里面可以包含多个函数,函数里实现一些功能。
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数。
1、创建类:
Python面向对象
Python面向对象
2、面向对象的三大特性
1)、封装(将内容封装到某个地方,以后在调用被封装在某处的内容)
条件:将内容封装到某处;从某处调用被封装的内容
第一步:封装
Python面向对象
self是形式参数,当执行obj1=Foo(‘chen’,18)时,self等于obj1;当执行obj2=Foo(‘wang’,22)时,self等于obj2.所以内容其实是被封装到了对象obj1,obj2中,每个对象都有name,age属性。
第二步:调用被封装的内容,
有两种情况,通过对象直接调用
Python面向对象
通过self间接调用
Python面向对象
2)、继承
即子类(派生类)可以继承父类(基类)的内容,语法为class 子类(父类):
如果在子类中需要父类的构造方法就需要显示的调用父类的构造方法,或者不重写父类的构造方法。
在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别在于类中调用普通函数时并不需要带上 self 参数
Python 总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)
3)、多态(一种事物的多种形态,基础是继承)
不用多态,定义100种动物都有name,eat属性
Python面向对象
用多态方法,定义Animal类,不需定义吃属性,直接继承调用
Python面向对象

参考文章:
https://www.cnblogs.com/chengd/articles/7287528.html
http://www.runoob.com/python/python-object.html