首页 > Python3教程 > Python3类与面向对象

Python3 面向对象编程

Python是一门面向对象的语言,在Python中很容易创建一个类和对象。本文主要介绍Python的面向对象编程。

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想,

把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数方法。

面向过程编程把计算机程序作为一系列的命令集合,即一组函数的顺序执行。

为了简化程序设计,面向过程把函数继续切分为子函数,即把复杂函数通过切割成简单函数来降低系统的复杂度。

而面向对象的程序设计把计算机程序视为一组对象的集合,每个对象都可以接收其他对象发过来的消息,并处理这些消息,

计算机程序的执行就是一系列消息在各个对象之间传递。

在Python中,所有数据类型都视为对象,当然也能自定义对象。自定义的对象数据类型就是面向对象中的类(Class)。

 

面向对象技术简介

类(Class): 用来描述具有相同的属性和方法的对象的集合。定义了一个集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数方法体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,能对其进行改写,这个叫方法的覆盖(override),也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承允许把一个派生类的对象作为一个基类对象对待。

如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

方法:类中定义的函数。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

 

Python中的类提供了面向对象编程的所有基本功能:

类的继承机制允许多个基类,派生类能覆盖基类中的任何方法,方法中能调用基类中的同名方法,对象能包含任意数量和类型的数据。

 

面向过程和面向对象在程序流程上的区别

如表示一个学科的成绩,面向过程的程序用一个字典dict表示:

lesson1 = { 'name': 'python', 'score': 90 }

lesson2 = { 'name': 'java', 'score': 99 }

处理学科成绩通过函数实现,如打印成绩:

def print_score(lesson):

    print('%s: %s' % (lesson['name'], lesson['score']))

lesson1 = { 'name': 'python', 'score': 90 }
lesson2 = { 'name': 'java', 'score': 99 }

def print_score(lesson):
print('%s: %s' % (lesson['name'], lesson['score']))

print_score(lesson1)
print_score(lesson2)

而面向对象的程序设计思想为,lesson为一个对象,这个对象有name和score这两个属性(Property)。

如果要打印成绩,先创建这个类的对象,然后,给对象发一个print_score消息,让对象自己把自己的数据打印出来。

给对象发消息实际上就是调用对象对应的函数方法,即为对象的方法(Method)。

class Lesson(object):

def __init__(self, name, score):
self.name = name
self.score = score

def print_score(self):
print('%s: %s' % (self.name, self.score))

# 实例化对象
lesson1 = Lesson('python', 90)
lesson2 = Lesson('java', 99)
lesson1.print_score()
lesson2.print_score()

Python3 面向对象编程

面向对象的设计思想是从自然界中来的,在自然界中,类(Class)和实例(Instance)的概念常见的。

Class是一种抽象概念,如我们定义的Class——Lesson,是指学科这个概念,实例(Instance)是一个个具体的Lesson,

Lesson1和Lesson2是两个具体的Lesson对象。

面向对象的设计思想是抽象出Class,根据Class创建Instance。

面向对象的抽象程度又比函数要高,一个类Class既包含数据,又包含操作数据的函数方法。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。