Python基础之魔法方法MagicMethod

# __x__()的函数叫做魔法方法

class Washer():
    # 1. __init__(): 初始化对象, 并可以对不同的对象设置不同的初始化属性
    def __init__(self, width, height):
        self.width = width
        self.height = height

    # __str__() :输出方法中return的数据
    def __str__(self):
        return '这是洗衣机的说明书\n'

    # __del__() 删除对象
    def __del__(self):
        print(f'{self}对象已经被删除')

    def print_info(self):
        print(f'width: {self.width}, height: {self.height}')


haier = Washer(10, 20)  # 不输入参量会报错,TypeError: __init__() missing 2 required positional arguments: 'width' and 'height'
print(haier)
haier.print_info()

# 案例1: 烤地瓜
# 1. 定义类:初始化属性、被烤和添加调料的方法,显示对象信息的str
class SweetPotato():
    def __init__(self):
        self.cook_time = 0
        self.cook_state = '生的'
        self.condiments = []

    def cook(self, time):
        self.cook_time += time
        if 0 <= self.cook_time <3 :
            self.cook_state = '生的'
        elif self.cook_time < 5 :
            self.cook_state = '半生不熟'
        elif self.cook_time < 8 :
            self.cook_state = '熟了'
        else:
            self.cook_state = '烤糊了'

    def add_condiments(self, condiment):
        self.condiments.append(condiment)

    def __str__(self):
        return f'烤了{self.cook_time}分钟,状态:{self.cook_state}, 调料: {self.condiments}'
# 2. 创建对象
digua = SweetPotato()
# 3. 调用对应的实例方法
digua.cook(2)
digua.add_condiments('胡椒')
print(digua)
digua.cook(2)
digua.add_condiments('芝士')
print(digua)
digua.cook(2)
print(digua)


# 案例2: 搬家具,将小于房子剩余面积的家具摆放到房子中
class Furniture():
    def __init__(self, name, area):
        self.name = name  # 家具名字
        self.area = area  # 家具占地面积

bed = Furniture('双人床', 6)
sofa = Furniture('沙发', 10)
aircon = Furniture('空调', 100)

# 搬家具之房屋类
class Home():
    def __init__(self, address, area):
        self.address = address
        self.area = area
        self.free_area = area
        self.furniture = []

    def __str__(self):
        return f'address: {self.address}, area: {self.area}, free_area: {self.free_area}, furniture: {self.furniture}'

    def add_furniture(self, item):
        """ 容纳家具 """
        if self.free_area >= item.area:
            self.furniture.append(item.name)
            self.free_area -= item.area
        else:
            print('家具太大, 无法容纳')
home = Home('beijing', 100)
print(home)
home.add_furniture(bed)
print(home)
home.add_furniture(sofa)
print(home)
home.add_furniture(aircon)
print(home)

# 经典类或新式类
# 经典: class 类名:
# 新式类: class 类名(object):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值