• 第20节课:面向对象进阶


      1 # 第20节课:面向对象--进阶
      2 '''
      3 本节大纲:
      4 1- 实例方法与静态方法
      5 2- 动物园游戏设计
      6 3- 对象组合
      7 复习属性的概念:
      8     属性即特征,分为实例属性和静态属性:
      9     静态属性是指每个实例都共有的属性,比如nickname=人类
     10     实例属性是指不同的类不同的特征,比如每个人的身高体重年龄性别名字都不一样
     11     实例属性是在__init__里面定义的,应为后续的调用很简单,创建实例初始化就会会自动执行
     12 '''
     13 # 1- 对象的方法:
     14 #     概念:通过定义在类里面的函数
     15 #     实例方法:每个具体实例相关的方法===方法的本质是函数
     16 #     静态方法:共有的方法,与每个具体实例无关===方法的本质是函数
     17 # 1-1 实例方法:实例调用的方法
     18 # 2-1 类方法:类去调用的
     19 # class Person:
     20 #     nickname = '六六'
     21 #     def __init__(self,iname,iage,iweight):#实例方法一定要有实例self
     22 #         self.name=iname
     23 #         self.age=iage
     24 #         self.wei=iweight
     25 #     def eat(self):       #eat()这个实例去调用了方法,是实例方法
     26 #         self.wei+=10
     27 #         print('我在吃饭,重了十斤',self.wei)
     28 #     #类方法--类去调用的,实例调用也是可以的
     29 #     @classmethod    #打声招呼,证明要调用类方法了
     30 #     def tell(cls):  #定义一个类方法,类方法一定要有类cls
     31 #         print('这是类方法')
     32 #         ll=cls.nickname='暴富' #类和实例调用这个类方法的时候,会把nickname中原本的六六变成暴富
     33 #         print(ll)
     34 #     #静态方法
     35 #     @staticmethod
     36 #     def run():      #静态方法的括号中什么都没有,就相当于类当中的普通函数
     37 #         print('我是静态方法')
     38 #
     39 # p1 = Person('tom', 23, 180)
     40 # print(p1.nickname)  #打印得六六
     41 # p1.eat()      #打印得:我在吃饭,重了十斤 190
     42 # Person.tell() #可以用类去调用,打印得:这是类方法/n暴富
     43 # p1.tell()     #也可以用实例去调用,打印得:这是类方法/n暴富
     44 # Person.run()  #类可以调用静态方法
     45 # p1.run()      #实例也可以调用静态方法
     46 
     47 # 2- 动物园游戏设计
     48 '''
     49 游戏规则:
     50 1.10个房间,每个里面可能是200斤老虎或者100斤羊
     51 2.游戏开始后,系统随机给出房间号,游戏者喂里面的动物.喂老虎应该输入单词meat,
     52   喂羊应该输入单词grass喂对了,体重加10斤。喂错了,体重减少10斤
     53 3.敲房间的门,里面的动物会叫,老虎叫声音是‘Wow !!’,羊叫声是‘mie~~’。
     54   动物每叫一次体重减5斤。。
     55 4.游戏者强记每个房间的动物是什么,以便不需要敲门就可以喂正确的食物。
     56 5.游戏2分钟结束后,看看你喂的动物总体重是多少
     57 
     58 解读编程思路,定义三个类,分别是老虎,羊,房间.喂的操作用import
     59 
     60 '''
     61 class Tiger:
     62     nickName='老虎'
     63     #判断应该定义什么实例属性还是静态属性,就看这个属性是否和每个个体有关,这里每只老虎的体重都不一样,所有要定义实例属性
     64     def __init__(self,weight):
     65         self.tweight=weight
     66     #判断要定义实例方法还是静态方法,同样要方法是否涉及每个实例,这里每个老虎叫都只减少自己的体重,多以用实例方法
     67     def roar(self):
     68         print('我是老虎,wow!!体重减5斤')
     69         self.tweight -= 5
     70     def feed(self,food):
     71         if food=='meat':
     72             self.tweight += 10
     73             print('恭喜,虎虎喂食正确,体重加10斤!')
     74         else:
     75             self.tweight -= 10
     76             print('阿欧,喂食失误,体重减十斤!')
     77 class Sheep:
     78     def __init__(self,weight):
     79         self.sweight=weight
     80     def sroar(self):
     81         print('我是羊,mei~~,体重减5')
     82         self.sweight-=5
     83     def sfeed(self):
     84         if sfood=='grass':
     85             self.tweight+=10
     86             print('恭喜,喂食正确,体重加10斤!')
     87         else:
     88             self.tweight-=10
     89             print('阿欧,喂食失误,体重减十斤!')
     90 class Room:  #房间类
     91     #创建编号以及里面的动物
     92     def __init__(self,inNumber,inAnimal):
     93         self.num=inNumber
     94         self.ani=inAnimal
     95 t1=Tiger(200)
     96 print(t1.tweight) #打印得200
     97 t1.roar()            #叫了一声,打印得:195
     98 t1.feed('meat')      #喂食正确+10,打印得:205
     99 print(t1.tweight) #打印得我是老虎,wow!!体重减5斤/n195
    100 # s1=Sheep(100)
    101 # print(s1.sweight)   #打印得:100
    102 # s1.sroar()
    103 # print(s1.sweight)   #打印得:我是羊,mei~~,体重减5/n95
    104 #创建房间的实例
    105 ##r1=Room(1,'tiger')  #这里的老虎还不会吃不会叫,得传实例t1进去赋予tiger生命
    106 r1=Room(1,t1) #这里是把Tiger的一个实例当做参数传进来了,对象的组合
    107 #敲门操作:
    108 r1.ani.roar()
    109 #喂食操作:
    110 r1.ani.feed('meat')
    111 
    112 # 3- 对象的组合:
    113 ''' 
    114 现实世界里面的对象
    115     大对象里面有小对象
    116   房间对象:老虎和羊
    117     通过对象的属性表示这种组合关系的
    118     在类定义的初始化函数里面,表示对象的组合关系
    119       class Room:
    120         def__init__(self):
    121             self.num = 1
    122             self.animal=Tiger(200)
    123 游戏的扩展内容:
    124 *游戏初始化房间的动物是随机分配的,如何获取随机数?
    125 from random import randit
    126 print(randit(0,1))
    127 print(randit(1,10))
    128 *游戏限时两分钟
    129 ---如何获取当前的系统时间?
    130 import time
    131 curTime=time.time()
    132 '''
    133 # -----------初始化是个房间实例--------
    134 from random import randint
    135 print(randint(0,1))
    136 
    137 # roomList[]  #定义一个空列表,用于存放后面的遍历操作
    138 # for one in range(1,11):#房间编号是1-10
    139 #     if randint(0,1)==0:     #定义在0和1中各取两个值,各占概率百分之五十
    140 #         animal==Tiger(200)  #定义百分之五十的概率是Tiger类
    141 #     else:
    142 #         animal==Sheep(100)  #定义百分之五十的概率是Sheep类
    143 #     room=Room(one,animal)  #因为每次for循环遍历之后都会重置,
    144 #     roomList.append(room)  #所以要不遍历结果增加到前面定义的空列表保存起来
    145 
    146 ''' 
    147 这里采用循环体内加上游戏的完整逻辑,因为循环次数不确定,用while循环
    148 import time
    149 开始时间 = time.time()  单位是秒,现在到1970年的一个秒数
    150 while True:
    151     当前时间 = time.time()
    152     if 当前时间-开始时间 > 120:
    153     break
    154     #游戏的一次完整的逻辑
    155 
    156 
    157 代码自己课后完善
    158 '''
  • 相关阅读:
    德国闪电战和苏联大纵深,谁更厉害?(一个是为了避免战略上的持久战,一个是为了战役的突破)
    “MEAN”技术栈开发web应用
    MVC 01
    适配器模式
    w3wp占用CPU过高
    安装tensorflow
    MemCache分布式内存对象缓存系统
    MVC 使用IBatis.net
    分布式计算
    Remote Desktop Connection Manager
  • 原文地址:https://www.cnblogs.com/66-liu/p/14059282.html
Copyright © 2020-2023  润新知