老虎 羊 喂养 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()

 

posted @ 2023-07-23 21:22  胖豆芽  阅读(6)  评论(0编辑  收藏  举报