美文网首页python 高级码农成才之路
*禁白嫖*python-----面向对象编程2

*禁白嫖*python-----面向对象编程2

作者: 幼姿沫 | 来源:发表于2021-01-28 23:13 被阅读0次

禁白嫖的含义就是

 尊重我的劳动成果  点赞 打赏 转发 谢谢您各位捧场

烤地瓜 定义属性和方法

class SweetPotato:

#定义地瓜的属性  cookLevel * cookString * condiments

    def __init__(self):

        self.cookLevel=0

        self.cookString='烤的红薯是生的'

        self.condiments=[]

#定义魔法方法 将输出格式进行美化 直接输出类名即可,不需要调用方法或者属性

    def __str__(self):

        msg='红薯'+self.cookString

        if len(self.condiments)>0:

            msg=msg+'('

            for  tempin self.condiments:

                msg=msg+temp+','

            msg=msg.strip(',')

            msg=msg+')'

        return msg

#定义烤的方法 参数为时间 判断一下等级相对应的程度

    def cook(self,time):

       self.cookLevel+=time

        if self.cookLevel>=8:

            self.cookString='烤成灰了'

        elif self.cookLevel>=5:

            self.cookString='已经烤熟了'

        elif self.cookLevel>=3:

            self.cookString='烤的半生不熟'

        else:

            self.cookString='红薯烤的是生的'

    #给红薯添加酱料

    def add_condiments(self,condiments):

        self.condiments.append(condiments)

#实例化类对象 并且进行调用相对应的属性和方法

mySweetPotato=SweetPotato()

#红薯的初始值 直接进行调用并且进行输出

print('-----准备好了一个红薯,还没开始烤-----')

print('红薯烤的等级*',mySweetPotato.cookLevel,'烤红薯的状态*',mySweetPotato.cookString,'红薯的蘸酱*',mySweetPotato.condiments)

#开始烤红薯 规定烤的时间 判断一下红薯的生熟程度

print('-----接下来就要开始烤红薯了-----')

print('----- 将红薯开始烤4分钟 -----')

mySweetPotato.cook(4)

print('红薯烤的等级*',mySweetPotato.cookLevel,'烤红薯的状态*',mySweetPotato.cookString,'红薯的蘸酱*',mySweetPotato.condiments)

print('----- 红薯还没有熟,继续烤红薯 -----')

print('----- 继续烤红薯3分钟 -----')

mySweetPotato.cook(3)

print('-----开始往红薯上沾酱料 -----')

print('-----往红薯上蘸蜂蜜酱 -----')

mySweetPotato.add_condiments('蜂蜜酱')

#因为__str__为魔法方法 直接输出类名即可

print(mySweetPotato)

print('----- 将红薯再次烘烤5分钟 -----')

mySweetPotato.cook(5)

print('----- 在红薯上蘸上芥末酱 -----')

mySweetPotato.add_condiments('芥末酱')

print(mySweetPotato)

装修房子 存入物件

#实例化两个类对象 房间和床 房间的面积和床的面积进行比较如果小于的话可以直接放入床品类

#注 * 如果两个对象之间有一定的关系,那么这个对象一定是另外一个对象的属性 后者对象也同要有属性和方法

class Room:

    def __init__(self,area):

        self.area=area

        self.containsItem=[]

    def __str__(self):

        msg='房间的面积为*'+str(self.area)

        if len(self.containsItem) >0:

            msg=msg+'容纳的物品有*'

            for itemin self.containsItem:

                msg=msg+item.getName()+','

            msg=msg.strip(', ')

        return msg

    def accommodateItem(self,item):

        needArea =item.getUsedArea()

        if self.area > needArea:

            self.containsItem.append(item)

            self.area -= needArea

            print('ok,该物件已经摆放到房间中')

        else:

            print('房间面积为*%d,但是该物件的面积为*%d ' % (self.area,needArea))

class Bed:

    def __init__(self,area,name='bed'):

        self.area=area

        self.name=name

    def __str__(self):

        msg='床的面积为*'+str(self.area)

        return msg

    def getUsedArea(self):

        return self.area

    def getName(self):

        return self.name

room=Room(100)

print(room)

bed=Bed(20)

print(bed)

room.accommodateItem(bed)

print(room)

bed2=Bed(30,'席梦思')

room.accommodateItem(bed2)

print(bed2,room)

射击类游戏创建

'''

创建的类      属性                              方法

人    姓名  血量  持有的枪        安弹夹 安子弹 持枪 开枪(射子弹)

敌人  姓名  血量  持有的枪

枪    弹夹                        连接弹夹 射子弹

弹夹  当前的子弹数量 容量          保存子弹 射出子弹

子弹  杀伤力                      伤害敌人 (让敌人掉血量)

'''

class Human:

    def __init__(self,name):

        self.name=name

        self.blood=100

        self.qiang=None

    def __str__(self):

        return self.name+'剩余血量为*'+str(self.blood)

    def andanjia(self,danjia,qiang):

        qiang.lianjiedanjia(danjia)

    def anzidan(self,danjia,zidan):

        danjia.anzidan(zidan)

    def naqiang(self,qiang):

        self.qiang=qiang

     def kaiqiang(self,diren):

        self.qiang.kaiqiang(diren)

    def loseBlood(self,killPower):

        self.blood -=killPower

class Qiang:

    def __init__(self):

        self.danjia=None

    def __str__(self):

        if self.danjia:

            return '枪当前有弹夹'

        else:

            return '枪当前没有弹夹'

    def lianjiedanjia(self,danjia):

        if not self.danjia:

            self.danjia=danjia

    def kaiqiang(self,diren):

        zidan=self.danjia.shezidan()

        if zidan:

            zidan.shanghai(diren)

        else:

            print('没有子弹了,放了空枪')

class Danjia:

    def __init__(self,rongliang):

        self.rongliang=rongliang

        self.rongnaList=[]

    def __str__(self):

        return '弹夹当前的子弹数量为*' +str(len(self.rongnaList))+'/'+str(self.rongliang)

    def anzidan(self,zidan):

        if len(self.rongnaList) <self.rongliang:

            self.rongnaList.append(zidan)

    def shezidan(self):

        if len(self.rongnaList) >0:

            zidan=self.rongnaList[-1]

            self.rongnaList.pop()

             return zidan

        else:

                return None

class ZiDan:

    def __init__(self,shashangli):

        self.shashangli=shashangli

    def shanghai(self,diren):

        diren.loseBlood(self.shashangli)

humen=Human('wangsir')

danjia=Danjia(20)

print(danjia)

qiang=Qiang()

print(qiang)

i=0

while i<=5:

zidan=ZiDan(5)

humen.anzidan(danjia,zidan)

i+=1

print(danjia)

humen.andanjia(danjia,qiang)

print(qiang)

diren=Human('engemy')

print(diren)

humen.naqiang(qiang)

humen.kaiqiang(diren)

print(diren)

print(danjia)

humen.kaiqiang(diren)

print(diren)

print(danjia)

相关文章

  • *禁白嫖*python-----面向对象编程2

    禁白嫖的含义就是 尊重我的劳动成果 点赞 打赏 转发 谢谢您各位捧场 烤地瓜 定义属性和方法 class Swee...

  • *禁白嫖*python-----面向对象编程1

    禁白嫖的含义就是 尊重我的劳动成果 点赞 打赏 转发 谢谢您各位捧场 #面向对象object编程 / 面向过程pr...

  • *禁白嫖*python-----文件操作

    禁白嫖的含义就是 尊重我的劳动成果 点赞 打赏 转发 谢谢您各位捧场 # 往文件中进行写入信息 with open...

  • * 禁白嫖 * python-----类多态

    #定义时的类型和运行时的类型不一致则为多态 class F1(object): def show(self): p...

  • python-day14

    一、面向对象编程 编程思想:1.面向对象编程 --> 算法,逻辑2.函数式编程 --> 函数3.面向对象编程 ...

  • 面向对象基础

    一、面向对象概述 1、面向对象编程包括: OOA:面向对象分析OOD:面向对象的设计OOP:面向对象的编程实现 2...

  • 2018-10-17类和对象

    1⃣️面向对象编程 编程思想:1.面向过程编程 ---> 算法、逻辑2.函数式编程 --> 函数3.面向对象编...

  • Swift和OC的区别

    一.编程范式 1.Swift可以面向协议编程,函数式编程,面向对象编程; 2.OC以面向对象编程为主,当然也可以引...

  • 类造就万物-面向对象一

    什么是面向对象 面向对象是一种编程方式,在编程领域中一共有三种编程风格1、面向过程2、函数式编程3、面向对象编程以...

  • 2018-10-17类,对象

    1、面向过程编程 --> C,算法、逻辑 2、函数式编程 --> 函数 3、面向对象编程 --> 类和对象 一、类...

网友评论

    本文标题:*禁白嫖*python-----面向对象编程2

    本文链接:https://www.haomeiwen.com/subject/fqmzzktx.html