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

Python面向对象程序设计

2019-03-19 10:12 447 查看

面向对象程序设计基础

1.面向对象程序设计思想概述

 在传统的程序设计中,通常使用数据类型对变量进行分类。不同数据类型的变量拥有不同的属性,如整形变量用于保存整数,字符串变量用于保存字符串。数据类型实现了对变量的简单分类,但并不能完整的描述事物。

在日常生活中要描述一个事务,就要说明他的属性,也要说明他所能进行的操作。例如,如果将人看做一个事物,他的属性包含姓名,性别,生日,职业,身高,体重等,他能完成的动作包括吃饭,行走,说话等。将人的属性和能够完成的动作结合在一起,就可以完整的描述人的所有特征了。

面向对象的程序设计思想正是基于这种设计理念,将事务的属性和方法都包含在类中,而对象则是类的一个实例。如果将人定义为类的话,那么某个具体的人就是一个对象。不同的对象拥有不同的属性值。

2.面向对象程序设计中的基本概念

  • 对象:面向对象程序设计思想可以将一组数据和与这组数据有关操作组装在一起,形成一个实体,这个实体就是对象。
  • 类:具有相同或相似性质的对象的抽象就是类。
  • 封装:将数据和操作捆绑在一起,定义一个新类的过程就是封装。
  • 继承:继承描述了类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。
  • 方法:也成为成员函数,是指对象上的操作,作为类声明的一部分来定义。
  • 构造函数:一种成员函数,用来在创建对象时初始化对象。
  • 析构函数:析构函数和构造函数相反,当对象脱离其作用域时,系统自动执行析构函数。

定义和使用类 

1.声明类

在Python中,可以使用class关键字来声明一个类,其基本语法如下:

class 类名:

成员变量

成员函数

  • self:类的成员函数必须有一个参数,self,而且位于参数列表的开头。self就代表类的实例自身,可以使用self引用类的属性和成员函数。
  • 定义类的对象:对象名=类名()
  • 成员变量:在类定义中,可以定义成员变量并同时对其赋初始值。
  • 构造函数:构造函数是类的一个特殊函数,他拥有一个固定的名称,即__init__(),当创建类的对象时系统会自动调用构造函数,通过构造函数对类进行初始化操作。
  • 析构函数:析构函数也有一个固定的名称,即__del__().

2.静态变量

静态变量和静态方法是类的静态成员,他们与普通的成员变量和成员方法不同,静态类成员与具体的对象没有关系,而是只属于定义他们的类。

在类中可以定义静态变量,与普通的成员变量不同,静态类成员与具体的对象没有关系,而是只属于他们的类。

Python不需要显式定义静态变量,任何共有变量都可以作为静态变量使用。访问静态变量的方法如下:类型.变量名

3.静态方法的使用

与静态变量相同,静态方法只属于定义它的类,而不属于任何一个具体的对象。静态方法具有如下特点:

(1)静态方法无须传入self参数,因此静态方法中无法访问实例变量

(2)在静态方法中不可以直接访问类的静态变量,但可以通过类名引用静态变量

可以使用@staticmethod定义静态方法

4.使用instance()函数判断对象类型

使用isinstance()函数可以用来监测一个给定的对象是否属于某个类或类型,如果是则返回True;否则返回False。其使用方法如下:isininstance(对象名,类名或类型名)

类的继承和多态

1.继承

通过继承机制,用户可以很方便的继承其他类的工作成果。如果有一个设计完成的类A,可以从其派生出一个子类B,类B拥有类A的所有属性和函数,这个过程叫做继承。类A被称为类B的父类。

2.抽象类和多态

  • 定义抽象类:Python通过类库abc实现抽象类,因此在定义抽象类之前需要从类库abc导入ABCMeta类和abstractmethod类。方法如下:from abc import ABCMeta,abstractmethod。在定义抽象类是只需在类定义中增加如下代码:__metaclass__=ABCMeta。在抽象类里面可以定义抽象方法,定义抽象方法时需要在前面加上下面的代码:@abstractmethod。因为抽象方法不包含任何实现的代码,所以其函数体通常使用pass。
  • 实现抽象类:可以从抽象类派生子类。方法与普通类的派生和继承一样。
  • 多态:所谓多态,指抽象类中定义的一个方法,可以在其子类中重新实现,不同子类中的实现方法也不相同。

复制对象

1.通过复制复制对象

可以通过赋值操作赋值对象,方法如下:

新对象名=原有对象名

2.通过函数参数赋值对象 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: