python入门基础知识(十):类和对象
1. 什么是面向对象
目前的软件开发领域有两种主流的开发方法,分别是结构化开发方法和面向对象开发方法。早期的编程语言如C、Basic、Pascal等都是结构化编程语言,随着软件开发技术的逐渐发展,人们发现面向对象可以提供更好的可重用性、可扩展性和可维护性,于是催生了许多的面向对象的编程语言,如C++、Java、Python、C#和Ruby等。面向对象程序设计即OOP,是Object-Oriented Programming的缩写。面向对象编程技术起源于20世纪60年代的Simula语言,其自身理论已经十分完善,并被多种面向对象程序设计语言(Object-Oriented ProgrammingLangunianling,OOPL)实现。由于很多原因,国内大部分程序设计人员并没有很深的OOP以及OOPL理论,很多人从一开始学习到工作很多年都只是接触到C/C++、Java等静态类型语言,而对纯粹的OOP思想以及动态类型语言知之甚少。对象的产生通常基于两种基本方式,分别是以原型对象为基础产生新对象和以类为基础产生新对象。
2. 类
在面向对象的编程语言中,使用类来定义和表示具有相同属性或功能的模型。
3. 对象
对象属性引用的方法和Python中其他属性引用的方法一样,都是使用“obj.name”格式。在创建对象后,类命名空间中所有的命名都是有效属性名。
4. 类方法
要想用类来解决实际问题,还需要定义一个包含属性和方法的类,因为这才符合现实世界中的事物特征。
(1)定义并使用类方法
在Python程序中,可以使用关键字def在类的内部定义一个方法。在类中定义方法后,当在类的外部调用该类的这个方法时可以完成对应的功能。定义类方法的方式与函数的定义方式相似,但是有如下3点区别。
● 方法的第一个参数必须是self,而且不能省略。
● 方法的调用需要实例化类,并以“实例名.方法名(参数列表)”
的形式进行调用。
● 必须整体进行一个单位的缩进,表示这个方法属于类体中的内容。
(2)构造方法
在定义类时可以定义一个特殊的方法,即构造方法 init()。注意,在init的前后分别是两个下画线“_”。构造方法用于类实例化时初始化相关数据,如果在这个方法中有相关参数,则实例化时就必须提供。
在Python语言中,很多类都倾向于将对象创建为有初始状态的形式,所以会在很多类中看到定义一个名为__init__()的构造方法,例如下面的演示代码。
在Python程序中,如果在类Myclass中定义了 init()方法,那么类的实例化操作会自动调用__init__()方法。所以接下来可以这样创建一个新的实例:
当然,构造方法__init__()可以包含参数,参数通过构造方法__init__()传递到类的实例化操作上。