使用Python实现下述功能。
房地产代理公司(agent)管理用于购买或租聘的房产(property)。市面上有两种类型的房产:公寓(apartment)和房子(house)。公司需要能够选择一种类型的房产加入待售列表,并输入一些新房产的相关细节:所有房产都有名称、面积、价格;公寓有楼层数;房子有花园面积。可以列出目前所有手头的房产,并且可以选择一个房产进行出售或出租,将其标记成售出或已租的状态。
--------------------------------------------------------------------------
--------------------------------------------------------------------------
--------------------------------------------------------------------------
class Agent:
id = 1000
__properties = []
def add_property(self, property_):
Agent.__properties.append(property_)
def list_properties(self):
for p in Agent.__properties:
print(p)
def get_property(self, id_):
for p in Agent.__properties:
if p.get_id() == id_:
return p
class Property:
def __init__(self, name, area, price):
Agent.id += 1
self._id = Agent.id
self._name = name
self._area = area
self._price = price
self._status = "for sale"
def __str__(self):
return f"id: {self._id}, name: {self._name}, area: {self._area}, price: {self._price}, status: {self._status}"
def sell(self):
self._status = "sold"
def rent(self):
self._status = "rented"
def get_id(self):
return self._id
class Apartment(Property):
def __init__(self, name, area, price, floor):
super().__init__(name, area, price)
self.__type = "apartment"
self.__floor = floor
def __str__(self):
return super().__str__() + f", floor: {self.__floor}"
class House(Property):
def __init__(self, name, area, price, garden_area):
super().__init__(name, area, price)
self.__type = "house"
self.__garden_area = garden_area
def __str__(self):
return super().__str__() + f", garden area = {self.__garden_area}"
if __name__ == "__main__":
agent = Agent()
apartment1 = Apartment("apartment1", 80, 1000000, 5)
apartment2 = Apartment("apartment2", 100, 1200000, 10)
house1 = House("house1", 200, 8000000, 50)
house2 = House("house2", 170, 5500000, 60)
agent.add_property(apartment1)
agent.add_property(apartment2)
agent.add_property(house1)
agent.add_property(house2)
# 列出所有房产
agent.list_properties()
# 出售house1
agent.get_property(1003).sell()
# 出租apartment1
agent.get_property(1001).rent()
print("-----------------------")
# 列出所有房产
agent.list_properties()