首页 > 技术文章 > python之面向对象(老虎与羊)

zhaobobo001 2021-02-20 21:14 原文

 1 #定义类
 2 class Tiger:
 3     nickName = '老虎' #静态属性,这个属性是属于整个类的,所有的这类的实例都是一样的
 4     __name = 'xx' #私有的  -- 继承中使用,子类不能使用
 5     #实例属性,属于实例的,有个初始化方法,:__init__
 6     def __init__(self,inweight):  #只要调用构造方法,就会自动调用  __init__ ;self:谁调用就是谁的,自动调用
 7         # print("我执行了",self,inweight)
 8         self.weight = inweight  #对象.属性  self等于任何一个实例
 9         # 实例方法-和实例有关,看这个方法有没有涉及到实例属性:例如老虎叫 ,减5斤,不可能一只老虎叫,所有老虎减5斤
10     def roar(self):
11         print('我是老虎,wow,体重减少5斤')
12         self.weight -=5
13         # 静态方法:大家都一样
14     def feed(self,food):
15         if food == '':
16             print('喂食正确,体重加10斤')
17             self.weight += 10
18         else:
19             print('喂食错误,体重减10斤')
20             self.weight -= 10
21 
22 class Sheep:
23     nickName = ''  # 静态属性,这个属性是属于整个类的,所有的这类的实例都是一样的
24     __name = 'xx'  # 私有的  -- 继承中使用,子类不能使用
25 
26     # 实例属性,属于实例的,有个初始化方法,:__init__
27     def __init__(self, inweight):  # 只要调用构造方法,就会自动调用  __init__ ;self:谁调用就是谁的,自动调用
28         # print("我执行了",self,inweight)
29         self.weight = inweight  # 对象.属性  self等于任何一个实例
30         # 实例方法-和实例有关,看这个方法有没有涉及到实例属性:例如老虎叫 ,减5斤,不可能一只老虎叫,所有老虎减5斤
31     #叫方法
32     def roar(self):
33         print('我是羊,mie,体重减少5斤')
34         self.weight -= 5
35         # 静态方法:大家都一样
36     #喂食方法
37     def feed(self, food):
38         if food == '':
39             print('喂食正确,体重加10斤')
40             self.weight += 10
41         else:
42             print('喂食错误,体重减10斤')
43             self.weight -= 10
44 
45 #对象的组合  :对象里面有对象 :房间  里面有老虎或者羊
46 class Room:
47     #属性:编号
48     def __init__(self,inNum,inAnimal):
49         self.Num = inNum
50         self.animal = inAnimal
51 
52 
53 from random import randint
54 # print(randint(0,2)) #0,1,2  左含右也含
55 #老虎和羊取得概率都是 50% ,所以设置0,1就行
56 
57 #————————房间初始化——————————————————
58 #定义个变量存房间
59 roomList = []
60 for one in range(1,11):
61     if randint(0, 1) == 1:
62         ani = Tiger(200)
63     else:
64         ani = Sheep(100)
65     room = Room(one,ani)
66     roomList.append(room)
67 #———————————————————————————————————
68 import time
69 #开始时间: = time.time()  #单位是s
70 #当前时间:=time.time()
71 #开始游戏
72 startTime = time.time()
73 while True:
74     curTime = time.time()
75 
76     if curTime-startTime > 60:
77         #结果输出
78         for one in roomList: # one是房间实例
79             print(f'房间编号是{one.Num},动物是{one.animal.nickName},体重是{one.animal.weight}斤')
80         break
81     #随机给出一个房间号 1-10
82     roomNum = randint(1,10) #int 数字
83     #以随机的房间号取对应的房间实例 有10个,按下标算是  0-9 ,所以要-1
84     roomObject = roomList[roomNum-1]
85     #去到房间实例,需要和用户交互 1.敲门
86     answer = input(f'当前编号是{roomNum}号房间,是否需要敲门(y/n)?:')
87     #如果敲门
88     if answer == 'y':
89         #这个房间.动物.叫
90         roomObject.animal.roar()
91     #喂食
92     food = input(f'请投喂食物肉或者草:')
93     roomObject.animal.feed(food)

 

推荐阅读