python面向对象编程-1-房屋存放家具

1、应用:房屋存放家具  

定义房间类,能够存储房间的大小和房间里的所有家具,并且要能够添加和移除家具;      

家具定义为抽象类,床和桌子进行继承设计。

from abc import ABC, abstractmethod

class Furniture(ABC):
    @abstractmethod
    def __init__(self, name, size):
        self.name = name
        self.size = size

    def __str__(self):
        return self.name

class Bed(Furniture):
    def __init__(self, name, size):
        super().__init__(name, size)

class Table(Furniture):
    def __init__(self, name, size):
        super().__init__(name, size)

class Room:
    def __init__(self, size):
        self.size = size
        self.furniture = []

    def add_furniture(self, item):
        if self.get_free_space() >= item.size:
            self.furniture.append(item)
            # self.size-=item.size
            print(f"{item.name} 已添加到房间。")
        else:
            print(f"房间空间不足,无法添加 {item.name}。")

    def remove_furniture(self, item):
        if item in self.furniture:
            self.furniture.remove(item)
            # self.size += item.size
            print(f"{item.name} 已从房间移除。")
        else:
            print(f"{item.name} 不在房间中。")

    def get_free_space(self):
        used_space = sum(item.size for item in self.furniture)
        return self.size - used_space

# 测试代码
bed = Bed("床", 3)
table = Table("桌子", 2)

room = Room(4)
room.add_furniture(bed)
room.add_furniture(table)

print("目前房间里的家具:")
for item in room.furniture:
    print(item)

room.remove_furniture(bed)

print("目前房间里的家具:")
for item in room.furniture:
    print(item)

from abc import ABC, abstractmethod

这是Python编程语言中的一段代码。在这段代码中,ABC是一个抽象基类(Abstract Base Class)的类,abstractmethod是一个装饰器(Decorator),用于声明抽象方法。

抽象基类是用来定义接口和行为规范的类,它本身不能被实例化。抽象方法是指在抽象基类中声明但没有具体实现的方法,具体的子类需要去实现这些抽象方法。

通过使用ABC作为基类,并结合abstractmethod装饰器,可以创建一个抽象基类,并声明其中的抽象方法。具体的子类可以继承这个抽象基类,并且必须实现父类中声明的抽象方法,否则将会报错。

这种抽象基类的机制可以帮助开发者在设计、组织和维护代码时,更好地遵循面向对象编程的原则,例如封装、继承和多态等。


上述代码定义了一个简单的家具类和房间类。Furniture类是一个抽象基类,其中声明了一个抽象方法__init__和一个非抽象方法__str__Bed类和Table类分别继承了Furniture类,并且实现了父类中的__init__方法。

Room类表示一个房间,其中包含一个属性size表示房间的总空间,以及一个列表furniture用于存储放在房间中的家具。add_furniture方法用于向房间中添加家具,如果空间足够则将家具加入列表;remove_furniture方法用于从房间中移除家具;get_free_space方法用于获取房间的剩余空间。

在测试代码中,创建了一个床和一个桌子的实例,并将它们依次添加到房间中。然后输出房间中的家具,再移除床并重新输出家具。可以看到,家具被正确地添加到房间中,并在移除后也被正确地从房间中删除。

这段代码简单地展示了如何使用抽象基类和继承来实现家具和房间之间的关系,并控制房间中的家具数量和空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能教学实践

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值