一、定义

  • 是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。
  • 对象是类创建出来的真实存在的事物。
  • 开发中,先有类,再有对象。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,家具['双人床', '沙发']
"""

 

posted on 2020-03-30 11:07  孤岛蓝鲸  阅读(356)  评论(0编辑  收藏  举报