Python使用class关键字来定义类,其语法格式如下:
其中,类名的首字母一般需要大写,具体示例如下:
在类中定义实例方法时,第一个参数指定为“self”只是一个习惯。实际上,该参数的名字是可以变化的
在Python中,有两种对象:类对象与实例对象。类对象只有一个,而实例对象可以有多个。
实例对象
实例对象通过调用类对象来创建(就像调用函数一样来调用类对象),每个实例对象继承类对象的属性,并获得自己的命名空间。实例方法的第一个参数默认为self,表示引用实例对象。在实例方法中对self的属性赋值才会创建属于实例对象的属性
Python中构造方法一般用来为实例属性设置初值或进行其他必要的初始化操作,在创建实例对象时被自动调用和执行
析构方法一般用来释放对象占用的资源,在删除对象和收回对象空间时被自动调用和执行
在例中,第5行定义一个析构方法,该方法名称(del)是固定不变的,如果用户没有定义它,Python将提供一个默认的析构方法。第9行使用del语句删除一个对象,此时会自动调用析构方法。当程序结束时,Python解释器会自动检测当前是否存在未释放的对象,如果存在,则自动使用del语句释放其占用的内存,如本例中的s1对象。
类方法可以通过类名或实例对象名调用,静态方法也可以通过两者调用
运算符重载
在Python中可通过运算符重载来实现对象之间的运算,如字符串可以进行如下运算:
字符串可以通过“+”运算符实现字符串连接操作,其本质是通过__add__方法重载了运算符“+”,因此上述代码还可以写成如下代码:
Python把运算符与类的实例方法关联起来,每个运算符都对应一个方法。运算符重载就是让类的实例对象可以参与内置类型的运算。
部分运算符重载方法
面向对象的三大特征
- 封装
封装是面向对象程序设计的核心思想。它是指将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,计算机的主机是由内存条、硬盘、风扇等部件组成,生产厂家把这些部件用一个外壳封装起来组成主机,用户在使用该主机时,无须关心其内部的组成及工作原理 - 继承
继承是面向对象程序设计提高重用性的重要措施。它体现了特殊类与一般类之间的关系,当特殊类包含了一般类的所有属性和行为,并且特殊类还可以有自己的属性和行为时,称作特殊类继承了一般类。一般类又称为父类或基类,特殊类又称为子类或派生类。例如,已经描述了汽车模型这个类的属性和行为,如果需要描述一个小轿车类,只需让小轿车类继承汽车模型类,然后再描述小轿车类特有的属性和行为,而不必再重复描述一些在汽车模型类中已有的属性和行为
在自然界中,继承这个概念非常普遍,例如:熊猫宝宝继承了熊猫爸爸和熊猫妈妈的特性,它有着圆圆的脸颊、大大的黑眼圈、胖嘟嘟的身体,人们不会把它错认为是狒狒。在程序设计中,继承是面向对象的另一大特征,它用于描述类的所属关系,多个类通过继承形成一个关系体系。
单一继承
单一继承是指生成的派生类只有一个基类,如学生与教师都继承自人
多重继承
在现实生活中,在职研究生既是一名学生,又是一名职员。在职研究生同时具有学生和职员的特征,这种关系应用在面向对象程序设计上就是用多重继承来实现的
3.多态
多态是面向对象程序设计的重要特征。生活中也常存在多态,例如,学校的下课铃声响了,这时有学生去买零食、有学生去打球、有学生在聊天。不同的人对同一事件产生了不同的行为,这就是多态在日常生活中的表现。程序中的多态是指一种行为对应着多种不同的实现。例如,在一般类中说明了一种求几何图形面积的行为,这种行为不具有具体含义,因为它并没有确定具体几何图形,又定义一些特殊类,如三角形、正方形、梯形等,它们都继承自一般类。在不同的特殊类中都继承了一般类的求面积的行为,可以根据具体的不同几何图形使用求面积公式,重新定义求面积行为的不同实现,使之分别实现求三角形、正方形、梯形等面积的功能
在实际编写应用程序时,开发者需要根据具体应用设计对应的类与对象,然后在此基础上综合考虑封装、继承与多态,这样编写出的程序更健壮、更易扩展。
Python中加法运算符可以作用于两个整数,也可以作用于字符串