您的位置:首页 > 编程语言 > Python开发

Python Day7

2015-12-12 00:03 423 查看
面向对象编程基础

什么是面向对象编程

通过封装、继承和多态三大特性,


面向对象编程的三大特性,封装性,继承性,多态性,是通过类来实现的。
封装性,在类中定义的属性和方法只能通过类的实例进行访问,而其他非实例化对象则无 法访问类中的属性和方法,从而实现具体功能代码的隐藏。
继承性,即派生类,好比儿子从父亲那里继承了作为人类活动的身体,能动,会看书,会做 许多和父亲一样的活动,但同时会在父亲的基础上,又增加了许多的功能。子类拥有和父类一样的 功能,又增加了新的功能。
多态性,这是通过继承衍生出来的属性,即子类从父类得到的方法表现出不同的消息处理 结果。
消息传递机制,对象通过接受消息、处理消息、传出消息或者使用其他类的方法实现特定 的功能,即是消息传递机制。

示例
定义一个狗的类,有两个方法,叫和吃
{
黑毛


} 实例化一个狗A A=狗 此时,A可以叫,可以吃,它的毛是黑色的,这是数据封装,代码实现简洁,而且避免重复 造砖。 定义一个藏獒的类,继承狗的类 藏獒:狗{ 利齿 守卫 } 实例化一个藏獒 B=藏獒 此时,B可以叫,可以吃,而且此时它的属性是,除了黑色的毛,还有利齿,和新的方法守 卫,这是继承,藏獒不用重新写叫和吃的方法,黑毛的属性。 定义一个萨摩,继承狗的类 萨摩:狗{ 叫 } 实例化一个萨摩 C=萨摩 此时,C可以吃,可以叫,而且毛是黑色的,但是,C的叫和狗的叫有所不同,这是多态,即 同一个方法,不同的实例处理的消息所得结果是不同的,即A的叫和C的叫的到处理的消息结 果是不同的。

__init__ 函数

属于构造方法,实例化对象时自动创建




self,形式参数

比如上图中self参数,在实例化对象时,如p1=Person("gf1"),此时self参数会等于对象p1.

如何调用类中封装的内容

对于类中的字段、属性、方法等,可通过对象直接调用(公有)或者self间接调用(私 有)。

经典类和新式类
简单来说是通过是否有“(object)”这样的字样来判断。在多继承的情况下,经典类会采用深度优先搜寻,而新式类则会选择广度优先搜索

类在内存中的表现形式
类和类的方法、属性在内存中仅有一份,想对面向过程的函数式编程来说,更加节省内存。而针对每个对象的单独的变量,则单独保存在各自对象的内存中,另外在对象中还包括一个指向类的指针。

类的成员
字段

普通字段和静态字段,普通字段是由对象进行调用的,而静态字段是由类进行调用的。

方法

方法分为普通方法、类方法和静态方法
普通方法,至少有一个self参数 ,执行时,自动将调用该方法的对象赋值给self
类方法,至少一个cls参数,执行时,自动将调用该方法的类赋值给cls
静态方法,没有默认参数,由类来调用。

属性
经典类中,属性在定义时,只需在普通方法上添加@property,并且仅有一个self参数,在调用时无需括号

新式类中,属性在定义时,又有所不同,下图是以装饰器的方式来定义新式类中的属性的





而在新式类中还可以使用静态的方式定义属性,如图




类成员修饰符

分为公有成员和私有成员,想对公有成员,私有成员很好识别,如"__name"就是一个私有成员。访问时,公有成员可以在基类和派生类中进行访问,而私有成员只可以在类的内部进行访问。

本文出自 “曦字号” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: