我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程。其实不管是面向过程,还是面向对
象,说白了就是一种编程方式而已。既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” 和 “对象” 来实
现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
基本概念:
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
如何创建一个类:
1、class是关键字,表示类
2、创建对象,类名称后加括号即可
如何使用类:
一、实例化:
#创建了一个名为people的类 class people: gender = "male" #共有的特征 def print_name(self): print("print_name-----> %s"%self) x = int(6) #int一个值,赋值给x print(x) #打印输出x的值 obj = people() #people加括号会返回一个值,并赋值给obj,这就实例化 print(obj) #打印输出obj的值 -------------输出结果------------------- 6 #x的值 <__main__.people object at 0x00000000028C9C88> #得到的就是一个对象
二、引用类的特征(类的变量)和技能(类的函数)
#创建了一个名为people的类 class people: gender = "male" def print_name(self): print("print_name-----> %s"%self) print(people.gender) #类名.变量名,打印这个类的共有特征,性别 print(people.print_name) #类名.函数名,打印这个函数的返回值 people.print_name("michael") #类名.函数名加括号调用函数并传了一个参数 -----------------------输出结果------------------------ male #共有特征是男 <function people.print_name at 0x00000000026DB950> #返回值的内存地址 print_name-----> michael #函数运行结果
如何使用实例:
#创建了一个名为people的类 class people: gender = "male" def __init__(self,nickname): self.nick = nickname def print_name(self,age): print("%s's age is %s"%(self.nick,age)) p1 = people("michael") #类名加括号里传参数调用会返回一个值,赋值给p1得到一个具体的对象 p2 = people("jack") #类名加括号里传参数调用会返回一个值,赋值给p2得到一个具体的对象 print(p1.nick) #打印对象p1的名字 print(p2.nick) #打印对象p2的名字 print(p1.gender) #打印所有对象共有的特征,性别 print(p2.gender) #打印所有对象共有的特征,性别 print(p1.print_name) #打印p1的绑定方法的返回值 print(people.print_name) #打印 类名.函数名 的返回值 p1.print_name(18) #self=p1就是p1自己本身的值传给位置参数self people.print_name(p2,23) #这个结果同上是一样的,只是在位置参数那直接传的p1 -----------------------------输出结果--------------------------------------- michael #p1.nick的名字 jack #p2.nick的名字 male #共有特征,男 male #共有特征,男 <bound method people.print_name of <__main__.people object at 0x0000000002929E10>> #实例化对象的绑定方法的返回值的内存地址 <function people.print_name at 0x000000000292B9D8> #类名.函数名的返回值的内存地址 michael's age is 18 #绑定方法传参的执行结果 jack's age is 23 #类名.函数名 直接传参执行的结果
总结:
类:
1、实例化;
2、引用名字(类名.变量名,类名.函数名)。
实例:
引用名字(实例名.类的变量,实例名.绑定方法,实例名.实例自己的变量名)。
其他:
1、类对变量的:增、删、改、查。
#创建了一个名为people的类 class people: gender = "male" marital_status = "bachelordom" def __init__(self,nickname): self.nick = nickname def print_name(self,age): print("%s's age is %s"%(self.nick,age)) people.interest = "python" #类people中共有特征,增加爱好 print("共同爱好:",people.interest) #将结果输出打印 people.marital_status = "married" #经过不断的努力学习Python后,都成功脱单,修改婚姻状态 print("修改后的婚姻状况:",people.marital_status) #将结果输出打印 print("性别:",people.gender) #查看类people的共有特征,性别 del people.marital_status #删除婚姻状况变量名 print(people.marital_status) #查看删除结果,报错说明删除成功 ---------------------------输出结果------------------------------------ 共同爱好: python 修改后的婚姻状况: married 性别: male Traceback (most recent call last): File "F:/Michael/day26/类和对象.py", line 79, in <module> print(people.marital_status) #查看删除结果,报错说明删除成功 AttributeError: type object 'people' has no attribute 'marital_status'
2、实例化,对对象对应的变量的:增、删、改、查。
#创建了一个名为people的类 class people: gender = "male" marital_status = "bachelordom" def __init__(self,nickname): self.nick = nickname def print_name(self,age): print("%s's age is %s"%(self.nick,age)) p1 = people("michael") #类名加括号里传参数调用会返回一个值,赋值给p1得到一个具体的对象 p1.interest = "basketball" #为对象p1增加爱好,篮球 print("增加的爱好:",p1.interest) #结果输出打印 p1.marital_status = "married" #经过不断的努力学习Python后,都成功脱单,修改婚姻状态 print("修改后的婚姻状况:",p1.marital_status) #结果输出打印 print("查看p1的名字:",p1.nick) #查看p1的名字 del p1.marital_status #删除p1婚姻状况 print("原婚姻状态:",p1.marital_status) #查看删除结果,未修改原状态则删除成功 -----------------------------输出结果------------------------------------- 增加的爱好: basketball 修改后的婚姻状况: married 查看p1的名字: michael 原婚姻状态: bachelordom