Python面向对象程序设计有感

有学到面对对象中的对象是指客观世界中存在的对象,世间万物全可以是对象。概括上说,面向对象技术是一种从组织结构上模拟客观世界的方法。我的主观感受上并没有很好的理解这种编程思想,也没有明确的感受到它与面向过程编程的区别,这或许是因为我才接触编程半年,在后续的学习中,我会继续探索。

1.面向对象概述

(1)对象

对象分为静态部分和动态部分,静态部分被称为“属性”指对象本身的属性,例如人的性别、身高,动态部分指对象的行为,例如人可以走路、跑步。

具有相同属性和行为的一类实体被称为类,类是封装对象的属性和行为的载体。我在之后的学习中明白类是极为重要的,不知道其他语言是不是也要类的概率……

面向对象程序设计有封装、继承和多态三大基本特征。区别如下:

特征

概念

作用

封装

指用类作为载体将对象的属性和行为封装起来

是面向对象程序设计的核心思维,保证了类内部数据的完整性

继承

子类复用父类的属性和行为的同时又有特有的属性和行为

是实现重复利用的重要手段

多态

将父类对象应用于子类的特征

子类继承父类的勇士,也具备自己的特征并且能够实现不用的效果

在后续的学习中,我初步了解了封装、继承以及多态的意思和效果,挺神奇的……

2.类的定义和使用

定义类需要使用关键字class(为什么是class?),语法是class classname:,接着是应用语法name = classname()创建类的实例。

Python创建类后,可以创建_ init ()方法,我学的书上说是类似于Java的构造方法,就称它为构造方法吧。这个构造方法必须创建第一个参数self,他是用于访问类中的属性和方法的且会自动传递实参,因此在创建实例时就不需要传递参数给self。但是为什么要定义一个构造方法呢?这是我困惑的地方。我了解到这个方法是为了让实例绑定属性的。

类的成员由实例方法和数据成员组成。实例方法简单说就是在类中定义一个函数,只不过这个函数的第一个参数必须是self。数据成员简单说就是在类中定义变量,它分为类属性和实例属性,类属性是指在类中函数外定义的变量,实例属性是指定义在类的函数中的变量。

最后则是类的访问限制,个人认为也算是封装能力的一点体现。我们可以通过在属性或者方法名前加入单下划线,如_foo;双下划线__,如__foo;或收尾双下划线,如__foo__。

类型

表示类型

作用

单下划线

表示保护类型

只允许类本身和子类进行访问

双下划线

表示私有类型

只允许定义该方法的类本身进行访问

首尾双下划线

表示定义特殊方法

不明

3.属性

除了上述的属性外,我们还能通过@propetry将一个方法转化成属性。可以使得这个属性能用于计算且可以直接通过方法名来访问方法。格式如下:

//@property

def name(self):

body

通过这个方法我们还可以为属性添加安全保护机制,即把属性设置为私有,实现访问限制。

4.继承

面对对象编程中,被继承的称为父类或者基类,新的类称为子类或者派生类,通过如下格式继承:

//class name(基类):

body

当使用继承时,如果基类中的某个方法不适用于子类,我们就需要对这个方法进行重写直到满足我们的要求。在子类中不会自动调用基类的构造方法,就需要在子类中使用super()函数调用基类的构造方法。

**总结:大致学习了Python面向对象编程章节,对面向对象编程的思维还是不够清晰。对于类中的某些函数或者定义,书上并没有给出说明,整体上掌握还有欠缺。建议多进行实战,加深对知识的理解和运用。最后,这个章节带给我的感觉是神奇且神秘的。