- 一、面向对象基础概念
- 对象的特征 —— 属性
- 对象的特征 —— 方法
- 二、创建类和对象
- 创建实例对象
- 访问属性
- 三、属性与方法
- 构造方法
- 实例方法
- 类方法
- 静态方法
- 常用内置方法
Python是解释性语言,但是它同时和java等高级语言一样,可以采用面向对象的编程思想和方式进行编程
什么是面向对象(Object Oriented)? 面向对象是一种程序设计方法,它以对象作为基本的单元来构建系统,它利用对象将系统的复杂性
隐藏在对象里,从而构建出系统。面向对象包括三个过程:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)
1.面向对象分析指的是分析要开发的系统的各个方面,从而找出类和对象 2.面向对象设计指我们设计出一些特殊的类(如:抽象类)来表达系统中不同对象的共性和机制,让系统的对象互相协作,满足系统需要实现功能的设计过程 3.面向对象编程指我们用特定的面向对象编程语言来实现我们的设计,实现系统中的对象和类的过程
对象的特征 —— 属性1.属性——对象具有的各种特征 2.每个对象的每个属性都拥有特定值 例如:张三和李四的体重、年龄不一样
1.方法——对象执行的操作 顾客类、轿车类、商品类… 类是模子,确定对象将会拥有的特征(属性)和行为(方法)
类是对象的类型 不同于一般数据类型:具有方法
关于抽象的理解: 1.把相同的或相似的对象归为一类的这个过程就是抽象,所以,抽象就是分析问题的方法 2.抽象的基本原则: 只关心主要问题,而不关心次要问题 只关心主要矛盾,而不关心次要矛盾 只关心相同的东西,而不关心不同的东西 只关心问题是什么,能够完成什么,而不关心怎样去完成 3.抽象的过程其实就是面向对象编程的核心思想
类和对象有什么区别? 1.类是抽象的概念,仅仅是模板,比如说:" 人 " 2.对象是一个你能够看得到、摸得着的具体实体,比如:" 张三、李四、王五等 "
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中的类是由属性和方法组成的 具体划分如图: 类属性:类对象的属性,如之前例子中 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__(…):获取实例属性的值,可直接结合对象使用
