您当前的位置: 首页 >  Python

网易测试开发猿

暂无认证

  • 2浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python面向对象(九)-----详细

网易测试开发猿 发布时间:2021-12-14 15:54:45 ,浏览量:2

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

一、面向对象基础概念

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__(…):获取实例属性的值,可直接结合对象使用

关注
打赏
1665054478
查看更多评论
立即登录/注册

微信扫码登录

0.9109s