老虎 羊 喂养 self.rooms[room_num]=animal(room_num) 获得的是对象 ;self.rooms[room_num]=animal 时 获得 类
# 老虎 羊 喂养 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()