羊 老虎 和饲养员 ;调用方法需要在方法名后面加上一对圆括号

发布时间 2023-07-24 11:17:00作者: 胖豆芽
# 羊 老虎 饲养员
# 父类
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 get_room(self):
        print(f'在第{self._room_num}个房间')
    # 方法 获得体重
    def get_w(self):
        print('---------')
        print(f'{self._animal}当前的体重是{self._w}')
    #
    def eat(self,food):
        print(f'{self._animal}吃了{food},当前的体重是{self._w}')
    #
    def call(self):
        print(f'{self._animal}叫了一声{self._call},当前的体重是{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个房间 房间号 1到10
        for room_num in range(1,3):
            # 房间里可能是羊或老虎
            animal = random.choice([Tiger,Sheep])
            # 房间和动物对象 放入字典
            self.rooms[room_num] = animal(room_num)
    # 喂养
    def keep(self):
        for room_num,animal in self.rooms.items():
            animal.get_room()
            animal.get_w()
            animal.call()
            animal.eat(animal._food)
            animal.get_w()



# 实例化饲养员对象
k = Keeper()
k.put_animal()
k.keep()