目录:导读

  • 一、面向对象基础概念
  • 对象的特征 —— 属性
  • 对象的特征 —— 方法
  • 二、创建类和对象
  • 创建实例对象
  • 访问属性
  • 三、属性与方法
  • 构造方法
  • 实例方法
  • 类方法
  • 静态方法
  • 常用内置方法


一、面向对象基础概念

Python是解释性语言,但是它同时和java等高级语言一样,可以采用面向对象的编程思想和方式进行编程

什么是面向对象(Object Oriented)?
    面向对象是一种程序设计方法,它以对象作为基本的单元来构建系统,它利用对象将系统的复杂性

隐藏在对象里,从而构建出系统。面向对象包括三个过程:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)

1.面向对象分析指的是分析要开发的系统的各个方面,从而找出类和对象
2.面向对象设计指我们设计出一些特殊的类(如:抽象类)来表达系统中不同对象的共性和机制,让系统的对象互相协作,满足系统需要实现功能的设计过程
3.面向对象编程指我们用特定的面向对象编程语言来实现我们的设计,实现系统中的对象和类的过程

对象的特征 —— 属性

1.属性——对象具有的各种特征

2.每个对象的每个属性都拥有特定值

例如:张三和李四的体重、年龄不一样

面向对象设计python员工管理系统 面向对象程序设计语言python_测试工程师


面向对象设计python员工管理系统 面向对象程序设计语言python_开发语言_02

对象的特征 —— 方法

1.方法——对象执行的操作

面向对象设计python员工管理系统 面向对象程序设计语言python_python_03


顾客类、轿车类、商品类…

类是模子,确定对象将会拥有的特征(属性)和行为(方法)

类是对象的类型
不同于一般数据类型:具有方法

关于抽象的理解:
1.把相同的或相似的对象归为一类的这个过程就是抽象,所以,抽象就是分析问题的方法
2.抽象的基本原则:
        只关心主要问题,而不关心次要问题
        只关心主要矛盾,而不关心次要矛盾
        只关心相同的东西,而不关心不同的东西
        只关心问题是什么,能够完成什么,而不关心怎样去完成
3.抽象的过程其实就是面向对象编程的核心思想

类和对象有什么区别?

1.类是抽象的概念,仅仅是模板,比如说:" 人 "

2.对象是一个你能够看得到、摸得着的具体实体,比如:" 张三、李四、王五等 "

面向对象设计python员工管理系统 面向对象程序设计语言python_测试工程师_04

二、创建类和对象

Python实现类的语法:

class ClassName:
'类的帮助信息' #类文档字符串
class_suite #类体

在class_suite里面就可以定义类属性、方法、实例属性等。当一个类定义完之后,就产生了一个类对象。类对象支持两种操作:引用和实例化。引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象

创建实例对象

语法:

objectName = ClassName(args) #其中args为初始化参数列表
访问属性

可以使用点号 . 来访问对象的属性

例如:

class people:
	name = '人类' #类属性
	def __init__(self,name,age)
		self.name = name # 实例属性
		self.age = age
liuze = people("张三",30) #创建对像
print(people.name) #访问类属性
print(liuze.name) #访问对象属性

该段代码定义了一个people类,里面定义了name属性
people.name 表示:进行引用操作,类对象去引用类属性
liuze.name 表示:实例化操作,实例对象去引用实例属性

三、属性与方法

Python中的类是由属性和方法组成的

具体划分如图:

面向对象设计python员工管理系统 面向对象程序设计语言python_面向对象设计python员工管理系统_05


类属性:类对象的属性,如之前例子中 name = ‘人类’

实例属性:通过类实例化对象后,对象可以使用的属性 如 print(liuze.name)

私有属性:在类中,两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问
1.在类内部的方法中使用: self.__private_attrs
2.也可以使用object._className_attrName(对象名._类名__私有属性名) 来访问属性

内置属性:python类中系统默认自带的属性
内置属性如下:
   __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
   __doc__ :类的文档字符串
   __name__: 类名
   __module__: 类定义所在的模块(类的全名是’main.className’,如果类位于一个导入模块mymod中,那么className.module 等于 mymod)
   __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

构造方法

1.构造方法是负责对象成员的初始化工作,为实例变量(对象属性)赋予合适的初始化值

2.在python中构造方法使用的是__init__()方法,当创建了这个类的实例时就会调用该方法

self是什么?
   在上页PPT的例子中,构造方法中第一个形参为self,它代表类的实例。在python中,self在定义类的方法时是必须有的一个参数,且必须是第一个参数,但我们实际调用类的方法时不需要传入相应的参数。是否方法中存在self也是区分类的方法与普通的函数的一个标示
   self不是python关键字,我们把它换成其它的也是可以正常执行的。但建议用self
如下代码:

def __init__(this,name,age) #可以改为this
	this.name = name
	this.age = age
实例方法

1.在类中最常定义的成员方法,它至少有一个参数并且必须以实例对象作为其第一个参数,一般以名为’self’的变量作为第一个参数。(注意:不能通过类对象引用实例方法)

2.在实例方法中,以两个下划线开头,则表示该方法为私有方法,不能在类的外部调用
在类的内部调用方式: self.__private_methods
在外部调用方式:实例._类名__方法名()
例如:

class people:
	def __init__(self,name):
		self.name = name;
	def getName(self): #实例方法
		return self.name;
	def __say(self,con):
		print(self.name+"说:"+con);
liuze = people("张三") ; 
print(liuze.getName()); #可以用过实例对象引用
liuze._people__say("你好"); #外部调用私有方法
类方法

是类对象所拥有的方法,需要用修饰器" @classmethod "来标识其为类方法。它能够通过实例对象和类对象去访问。类方法的用途就是可以对类属性进行修改。对于类方法,第一个参数必须是类对象,一般以“cls”作为第一个参数

静态方法

需要通过修饰器" @staticmethod "来进行修饰,静态方法不需要多定义参数。类和实例都能
调用
例如:

class country :
	name= 'china';
	@classmethod
	def setName(cls,name): #类方法
		cls.name= name;
	@staticmethod
	def getName(): #静态方法
		print(country.name);
常用内置方法

在Python中有一些内置的方法,这些方法命名都有比较特殊的地方(其方法名以2个下划线开始然后以2个下划线结束)

1.__init__(self,…):构造方法,在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法

2.__del__(self):析构方法,在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用\

3.__str__(self,…):自定义实例输出方法,写好该方法后,替换实例默认的输出操作

4.__add__(self,…):两个实例的加法操作

5.__getattribute__(…):获取实例属性的值,可直接结合对象使用