DAY7:课后问题、案例:决战紫禁之巅

问答题

1. 什么是类,什么是对象?                                                                                                                           类是具有一组相同或者相似属性和行为的一系列对象,是一个模板,包含多个函,函数里实现一些功能。                                                                                                                                                对象:是实实在在存在的一个东西,类的实例化(具象化),根据模板创建的实例,通过实例对象可以执行类中的函数。

2. python中定义一个类的语法格式是什么?

class 类名():
    属性-----类属性、实例属性
    行为-----实例方法

3. 类由哪三部分构成?     类名,属性,方法

4.init方法有什么作用,如何定义?                                                                                                            是一种初始化函数,可以初始化实例属性                                                                                   

class 类名():
    def __init__(self,name,age):
        self.name=name
        self.age=age

5.方法中self代表什么?
        self代表对象本身,是对对象的引用

6.在类中定义init方法的时候第一个形参必须是self吗?瑟利夫可以用其他东西代替吗?                            不一定必须是self,任何东西都可以

7.python面向对象中的魔术方法,是如何定义的,魔法方法需要开发人员去调试吗?

def __xxx__():
    代码块

#不需开发人员调试

8.str方法可以没有返回值。这句话对吗?                                                                                                  错误,str方法是自定义格式输出的,如果不返回,这个数据就输出不了

9. 学会判断  类属性、实例属性、实例方法

课后实操题

1.python中如何通过类创建对象,请用代码举例说明。

class Person():
    ....
xiaoming=Person()   #创建一个对象xiaoming,括号里的参数是init方法中要用的参数

2.如何在类中定义一个方法,请用代码举例说明。

class Person():
    def init(self,name):
        self.name=name
        pass
    def run(self.name):
        print('%s快跑'.format(self.name))
        pass

3.定义一个水果类,然后通过水果类,创建苹果对象、橘子对象、西瓜对象、并分别添加上颜色属性。

class fruits():
    def __init__(self,name,color):
        self.name=name
        self.color=color
        pass
    def __str__(self):
        return '{}是{}的'.format(self.name,self.color)
    pass
apple=fruits('苹果','红色')
print(apple)
orange=fruits('橘子','橙色')
print(orange)
watermelon=fruits('西瓜','绿色')
print(watermelon)

4. 请编写代码,验证slfe就是实例本身

class Person:
    def weight(self):
        print('self=%s'%(id(self)))
        pass
    pass
liming=Person()    #创建对象
liming.weight()    #调用函数
print(id(liming))   #打印对象地址

#输出:
self=2044440088096
2044440088096

5.定义一个Animal类(1)使用__init__初始化方法为对象添加初始属性,如颜色、名字、年龄。(2)定义动物方法,如run、eat等方法。如调用eat方法时打印xx在吃东西就可以。(3)定义一个__str__方法,输出对象的所有属性。

class Animal:
    def __init__(self,name,color,age):
        self.name=name
        self.color=color
        self.age=age
        pass
    def run(self,speed):
        print('%s跑的%s'%(self.name,speed))
        pass
    def eat(self):
        print('{}在吃东西'.format(self.name))
        pass
    def __str__(self):
        return '{}的颜色是{},年龄是{}'.format(self.name,self.color,self.age)
    pass

car=Animal('猫','黄色',3)
car.run('很快')
car.eat()
print(car)
#输出
猫跑的很快
猫在吃东西
猫的颜色是黄色,年龄时3

案例:决战紫荆之巅

# 第一步:需要定义一个类【角色类】
import time   # 导入时间的包
class Role:
    def __init__(self,name,hp):
        '''
        构造初始化函数
        :param name:角色名字
        :param hp: 角色血量
        '''
        self.name=name
        self.hp=hp
        pass
    def tong(self,enemy):
        '''
        捅一刀
        :param enemy: 敌人
        :return:
        '''
        enemy.hp-=10      #敌人减掉10滴血
        info='【%s】捅了【%s】一刀'%(self.name,enemy.name)
        print(info)
        pass
    def kanren(self,enemy):
        '''
        砍人
        :param enemy: 敌人
        :return:
        '''
        enemy.hp-=15        #敌人减掉15滴血
        info = '【%s】砍了【%s】一刀'%(self.name, enemy.name)
        print(info)
        pass
    def chiyao(self):
        '''
        吃药补血
        :return:
        '''
        self.hp+=10
        info = '【%s】吃补血药,增加10滴血' % (self.name)
        print(info)
        pass
    def __str__(self):
        return '%s还剩%s的血量'%(self.name,self.hp)
    pass

# 创建2个【西门吹雪、叶孤城】实例化对象
# xmcx=Role('西门吹雪',100)
# ygc=Role('叶孤城',100)
# 开始玩游戏-----手动
# xmcx.tong(ygc)     #西门吹血捅叶孤城一刀
# print(xmcx)        #直接打印对象(地址格式)-----要打印具体内容,需要__str__方法
# print(ygc)
# print('****************************************')
# ygc.kanren(xmcx)
# xmcx.chiyao()
# print(xmcx)
# print(ygc)
# print('****************************************')
# ygc.tong(xmcx)
# ygc.chiyao()
# print(xmcx)
# print(ygc)

#要变成自动的(循环三种打法):

xmcx = Role('西门吹雪', 100)
ygc = Role('叶孤城', 100)
while True:
    if xmcx.hp<=0 or ygc.hp<=0:
        # 满足条件退出循环
        break
        pass
    xmcx.tong(ygc)  # 西门吹血捅叶孤城一刀
    print(xmcx)  # 直接打印对象(地址格式)-----要打印具体内容,需要__str__方法
    print(ygc)
    print('****************************************')
    ygc.tong(xmcx)
    print(xmcx)
    print(ygc)
    print('****************************************')
    xmcx.chiyao()
    print(xmcx)
    print(ygc)
    time.sleep(1)     #休眠暂停一秒钟
    pass

print('对战结束......')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值