Python学习之旅--类和对象
Posted 赵jc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之旅--类和对象相关的知识,希望对你有一定的参考价值。
1, 类和对象
- 目的: 知道什么是类, 什么是对象, 以及他们之间的关系
- 类: 抽象的概念, 具有一类共性事物(属性, 方法)的统称
- 对象: 类的一个实例, 具体的属性, 具体的行为
- 关系: 一对多的关系, 一个类可以创建出无数个对象
2, 定义类
-
目的: 可以通过python定义类
-
操作流程:
#1, 定义类, 系统中的一个基类,object class Person(object): # 属性 def __init__(self): pass # 行为 def play_game(self): print("是人就应该会打游戏")
3, 创建对象
-
目的: 可以通过定义好的类, 创建一个对象
-
操作流程:
#1, 定义类, 系统中的一个基类,object class Person(object): # 属性 def __init__(self): pass # 行为 def play_game(self,name): print("是人就应该会打游戏".format(name)) #2,通过类创建对象, 格式: 类() p = Person() #添加属性 p.name = "迪丽热巴" p.sex = "女" p.height = 1.65 print("我是,性别是,我的身高是".format(p.name,p.sex,p.height)) #调用行为 p.play_game("地下城勇士") print("==============================================") #3,创建第二个对象 p2 = Person() p2.name = "古力娜扎" p2.sex = "女" p2.height = 1.77 print("我是,性别是,我的身高是".format(p2.name,p2.sex,p2.height)) p2.play_game("吃鸡")
4, 获取对象属性
-
目的: 可以获取对象的属性
-
操作流程
""" 通过对象获取属性的两种方式: 1, 对象名.属性 2, self.属性 self: 哪个对象调用方法, self就是哪个对象 """ #1, 定义类 class Person(object): # 属性 def __init__(self): pass # 方法 def show_info(self): print("我是, 今年岁了".format(self.name,self.age)) #2, 创建对象, 设置属性, 获取属性 p = Person() p.name = "张三" p.age = 13 print(p.name, p.age) # 对象名.属性 p.show_info() print("=======================================") p2 = Person() p2.name = "刘亦菲" p2.age = 23 p2.show_info()
5, init方法
-
目的: 可以通过init方法, 创建对象的时候就设置属性
-
操作流程
#1, 定义类 class Animal(object): # 属性, 只要创建对象就会调用 def __init__(self,nick_name,color): self.nick_name = nick_name self.color = color # 函数(行为,方法) def show_info(self): print(self.nick_name, self.color) #2, 创建对象 cat = Animal("咖啡猫","红色") cat.show_info() dog = Animal("旺财","黄色") dog.show_info()
6, str方法
-
目的: 可以重写str方法,进行制定内容的输出
-
操作流程
- _str_: 输出对象的时候会自动调用
class Animal(object): def __init__(self,name,color): self.name = name self.color = color # 当我们去输出该类的对象时候, 会自动调用该方法 def __str__(self): return self.name cat = Animal("咖啡喵","绿色") print(cat)
7, del方法
-
目的: 知道del方法调用的顺序和时间
-
操作流程
class Animal(object): def __init__(self,name,color): self.name = name self.color = color # 当我们去输出该类的对象时候, 会自动调用该方法 def __str__(self): return self.name # 当程序运行结束之后会调用该方法 def __del__(self): print("__del__被调用了") #1, 创建对象 cat = Animal("咖啡喵","绿色") #2, 添加一个引用 cat2 = cat #3,删除cat,如果有多个引用指向cat那么只有当所有的引用被删除之后del方法才会马上调用 del cat del cat2 # 删除对象引用, 会自动调用del方法 print("aaaaa")
8, 实战案例一
-
目的: 可以参考代码,练习烤土豆
-
操作流程
""" 烤土豆练习: 1, 创建类 2, 定义初始化方法,初始化属性level,cookie_status 3, 定义方法,cookie_potato,接收烘烤的时间 a, 如果烘烤的时间在[1,3] 半熟 b, 如果烘烤的时间在(3,5] 熟透了 c, 如果烘烤的时间在(5,) 烤糊了 """ # 1, 创建类 class Potato(object): # 2, 定义初始化方法, 初始化属性level, cookie_status def __init__(self,level,cookie_status): self.level = level self.cookie_status = cookie_status #3,定义方法,cookie_potato,接收烘烤的时间 def cookie_potato(self,time): #3,1 设置烘烤的时间 self.level += time #3,2 判断时间,设置土豆的状态 if 1<= self.level <=3: self.cookie_status = "半生不熟" elif 3 < self.level <= 5: self.cookie_status = "熟透了,可以吃了" elif self.level > 5: self.cookie_status = "烤糊啦!" else: self.cookie_status = "生的" #4,重写str方法,方便查看对象的属性 def __str__(self): return self.cookie_status #5, 测试 p = Potato(0,"生的") #6,连续烘烤 p.cookie_potato(1) p.cookie_potato(1) p.cookie_potato(1) p.cookie_potato(8) #7,查看状态 print(p)
9, 实战案例二
-
目的: 可以参考代码完成士兵开枪的案例
-
操作流程
""" 案例: 士兵开枪 需求: 1, 定义士兵类,有枪,姓名属性 2, 有射击的方法 3, 定义枪类,有型号,突突突的方法 """"" #1, 定义士兵类 class Soldier(object): #1,初始化属性 def __init__(self,name,gun): self.name = name # 姓名 self.gun = gun # 枪的属性 #2,射击 def shoot(self): self.gun.tututu(self.name) #2, 定义枪类 class Gun(object): #1,初始化属性 def __init__(self,style): self.style = style #2,方法 def tututu(self,name): print(f"name使用了self.style型号的枪,向敌人突突突...") #3,使用 gun = Gun("黄金AK47") soldier = Soldier("王宝强",gun) soldier.shoot()
总结
1, 类和对象, 一对多关系, 一个类可以创建出无数个对象
2, 定义类, 格式: class 类名(object): pass
3, 创建对象, 格式: 对象名= 类名(参数)
4, 获取对象属性, 在类的方法内部self.属性, 在类的外部,对象名.属性
5, init作用, 在创建对象的时候,用来初始化对象的属性
6, str方法, 当输出一个对象的时候, 会自动调用的方法, 一般会进行重写
7, del方法, 当一个对象的引用变成0的时候会调用
8, 烤土豆. 案例
9, 士兵和枪之间的关系
以上是关于Python学习之旅--类和对象的主要内容,如果未能解决你的问题,请参考以下文章