一、定义
- 类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。
- 对象是类创建出来的真实存在的事物。
- 开发中,先有类,再有对象。eg:学生类、学生甲对象
#定义洗衣机类 """ class类名(): 代码 """ class Washer(): def wash(self): # self指得是调用该函数的对象。 print('能洗衣服') #创建对象 #对象名=类名() heier=Washer() print(heier) heier.wash()
二、魔法方法
在python中,__ xx __()的函数叫做魔法方法,指的是具有特殊功能的函数。
P.s:两边都是两个下划线
1、__init__()
初始化对象
class Washer(): def __init__(self,high,width): self.high=high self.width=width def wath(self): print(f'洗衣机的宽度{self.width},') print(f'洗衣机高度{self.high}') heier1 = Washer(10,20) heier1.wath()""" 洗衣机的宽度20, 洗衣机高度10 """
2、__str__()
在使用print输出对象的时候,默认打印对象的内存地址。
如果类定义了__str__方法,那么就会打印从这个方法中return的数据。
class Washer(): def __init__(self): self.high=500 def __str__(self): return '解释说明,类的说明或对象状态的说明' heier1 = Washer() print(heier1) """ 解释说明,类的说明或对象状态的说明 """
3、__del__()
但删除对象时调用
class Washer(): def __init__(self): self.high=500 def __del__(self): print('对象删除') heier1 = Washer() """ 对象删除 """
三、案例实现
1、烤地瓜
class SweetPotato(): def __init__(self): self.time = 0 self.static = '生的' self.condiments = [] def cook(self, time): while True: self.time += 1 if self.time>time: break if 0 <= self.time < 3: self.static = '生的' elif 3 <= self.time < 5: self.static = '半生不熟' elif 5 <= self.time < 8: self.static = '熟了' elif 8 <= self.time: self.static = '糊了' print(self) def __str__(self): return f'地瓜烤了{self.time}分钟,状态为{self.static}' def __del__(self): print('删了删了') digua1 = SweetPotato() digua1.cook(10)
2、搬家具
class Furniture(): def __init__(self, name, area): self.name = name self.area = area class Home(): def __init__(self, address, area): self.address = address self.area = area self.free_area = area self.furniture = [] def __str__(self): return f'房子地理位置{self.address},房屋面积是{self.area},房屋剩余面积是{self.free_area},家具{self.furniture}' def add_furniture(self, item): if item.area <= self.free_area: self.furniture.append(item.name) self.free_area -= item.area else: print('家具太大') bed = Furniture('双人床',6) safa = Furniture('沙发',6) jia=Home('北京',1000) print(jia) jia.add_furniture(bed) print(jia) jia.add_furniture(safa) print(jia) """ 房子地理位置北京,房屋面积是1000,房屋剩余面积是1000,家具[] 房子地理位置北京,房屋面积是1000,房屋剩余面积是994,家具['双人床'] 房子地理位置北京,房屋面积是1000,房屋剩余面积是988,家具['双人床', '沙发'] """