我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程。其实不管是面向过程,还是面向对
象,说白了就是一种编程方式而已。既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” 和 “对象” 来实
现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
基本概念:
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
如何创建一个类:
1、class是关键字,表示类
2、创建对象,类名称后加括号即可
如何使用类:
一、实例化:
#创建了一个名为people的类class people: gender = "male" #共有的特征 def print_name(self): print("print_name-----> %s"%self)x = int(6) #int一个值,赋值给xprint(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 #共有特征是男#返回值的内存地址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自己本身的值传给位置参数selfpeople.print_name(p2,23) #这个结果同上是一样的,只是在位置参数那直接传的p1-----------------------------输出结果---------------------------------------michael #p1.nick的名字jack #p2.nick的名字male #共有特征,男male #共有特征,男> #实例化对象的绑定方法的返回值的内存地址 #类名.函数名的返回值的内存地址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性别: maleTraceback (most recent call last): File "F:/Michael/day26/类和对象.py", line 79, inprint(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