# 老虎 羊 喂养
import random
# 父类
class Animal():
# 属性
def __init__(self,animal,w,call,food,room_num):
self._animal=animal
self._w=w
self._call=call
self._food=food
self._room_num=room_num
# 方法 吃
def eat(self,food):
print(f"在{self._room_num}号房间,{self._animal}吃了{food},当前体重{self._w}")
# 方法 叫
def call(self):
print(f"{self._animal}叫了一声{self._call},当前体重{self._w}")
# 方法 获取体重
def get_w(self):
print(f"{self._animal},当前体重{self._w}")
# 子类 老虎
class Tiger(Animal):
# 属性
def __init__(self,room_num):# 老虎类有必传参数 房间号
super().__init__('tiger',200,'wow','meat',room_num)
# 子类 羊
class Sheep(Animal):
# 属性
def __init__(self, room_num): # 羊类有必传参数 房间号
super().__init__('sheep', 100, 'mie', 'grass', room_num)
# 饲养员
class Keeper():
# 属性
def __init__(self):
# 变量 字典 存{房间号:动物类对象}
self.rooms = {}
# 方法 放入动物
def put_animal(self):
# 10个动物需要放10个房间
for room_num in range(1,10):
animal=random.choice([Tiger,Sheep])
# 将值传给字典 老虎、羊类当传入 房间号时 代表实例化;不传参数代表类
self.rooms[room_num]=animal(room_num)
print(self.rooms)
#方法 喂养动物
def keep(self):
for room_num,animal in self.rooms.items():
animal.get_w
animal.call()
animal.eat(animal._food)
animal.get_w
# 实例化 饲养员
k=Keeper()
k.put_animal()
k.keep()