(9)python面向对象编程

一、前言

因个人习惯,在阅读和学习文字资料时,习惯摘写笔记,因此在这里留下自己的学习记录。笔记的内容偏摘抄为主,并非自己的原创内容。

内容基于:《简明 Python 教程》Swaroop, C. H. 著沈洁元  译

二、简介

在前面的学习中,直接通过操作数据的函数或语句块语句块来设计程序,这是面向过程编程的体现。

把数据和功能结合起来,并用对象包裹起来组织程序,这是面向对象编程的概念。

面向对象包括两个方面:对象

类:是新建新类型,需定义该类的属性(变量和函数);

对象:是类的实例;

概念理解:

域:属于一个对象或类的变量称为域,根据域属于每个实例/类的对象或属于类本身,域可以分为实例变量类变量

属性:域和属于类的方法合称为属性。

三、创建类

关键字:class      其中方法被列在一个缩进块中。

类的方法与普通函数有一个明显区别:它必须有一个额外的第一个参数的名称,但是调用时你无须为该参数赋值,因为python会提供这个值。(这个特别的变量指对象本身,惯例上用self来命名。(名称没有严格要求,但推荐用self,因为是大家熟知的),self的作用类似java中的this。

例子:通过对象调用方法时,对象名.函数名(参数)   python会自动转化为   类名.函数名(对象名,参数)

(1)创建一个简单的类

class 类名:

         pass #An empty block  (类体时在一个缩语句块中定义)

(2)创建一个简单的对象

变量名 = 类名()

通过打印对象,我们可以知道该对象处于哪个模块和内存空间。

(3)简单定义类的方法

class Person:

         def sayHi(self):

                   print ("Hello,How are you?")

(4)简单的使用类的方法(不需要为self参数供值)

person = Person()

person.sayHi()

四、类中特殊的方法

(1)__init__方法(左右双下划线):

作用:类对象被建立时,马上运行,用于做对象的初始化。(类似JAVA中类的构造方法)

在类创建对象时,直接在括号中输入参数为__init__方法的参数赋值。

五、类中的变量

实质:它们是与类和对象的名称空间绑定的普通变量,它们起作用是在类与对象的前提下

域可以分为两种:类变量实例变量,以类还是对象拥有这个变量来区分。

类变量:该变量被类的所有对象共同使用,无论哪个对象改动了变量,其他对象都会受影响。

实例变量:该变量由对象拥有,每个对象有单独的拷贝,只对自己有影响,是非共享的。

类中直接定义的变量为类变量,通过self定义的变量为实例变量。

六、继承

面向对象编程的主要好处是代码的重用,实现的重要方法之一是继承,即父类与子类间的关系。

子类对象可以被视为父类的实例,这种现象称为多态

父类被称为基本类或超类,子类被称为导出类

如何实现,把一些共有的属性在父类中定义,在子类中定义同样的属性,并增加自己特有的属性,相应方法中调用父类的方法,有点类似java中方法的重写,只是得自己编写。(python不会自动调用父类的dong东西)

定义子类时,子类名后拼接元组,该元组的元素是父类名,允许多个父类,则为多重继承

例子:class 子类名(父类名,父类名):

元组中的父类是后续基类查找的依据。(python总是先在导出类(子类)中寻找对应的方法,子类中找不到对应方法,才在父类中逐个寻找。)

多重继承:在继承元组中列了一个以上的类。

猜你喜欢

转载自blog.csdn.net/chen_courage/article/details/81095504
今日推荐