python第二期day09

继承语法

# 类和类之间的一种关系, 子类可以继承父类的所有非私有属性和方法
# 私有属性和方法只能在本类里面使用, 不能分享给子类
class A():
    def __init__(self):
        self.name = "张三"
        # 私有的属性 名字前加两个下划线
        self.__age = 0
    def show(self):
        print("show()")
    def __haha(self):
        print("haha")
# B 继承了A   B是子类, A是父类
class B(A):
    pass
b = B()
print(b.name)
b.show()
# print(b.__age)
# b.__haha()

重构教师类和学生类

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

    def get_info(self):
        print(f'姓名 : {self.name}, 年龄: {self.age}')
class Student(Person):
    def __init__(self, name, age, class_name):
        super().__init__(name, age)
        self.__score = 0
        self.class_name = class_name
    def study(self):
        print(f'{self.name}在疯狂的学习中....')
    # 重写父类的方法
    def get_info(self):
        print(f'姓名 : {self.name}, 年龄: {self.age}, 班级{self.class_name}')
class Teacher(Person):
    def __init__(self, name, age, dept):
        super().__init__(name, age)
        self.salary = 0.0
        self.dept = dept
    def get_info(self):
        print(f'姓名 : {self.name}, 年龄: {self.age}, 教授学科{ self.dept}')

    def teach(self):
        print(f'{self.name}在认真的教课中....')
s1 = Student("小明", 16, "三年二班")
s1.get_info()
s1.study()
t1 = Teacher("eric", 30, "计算机科学与技术")
t1.get_info()
t1.teach()

案例

鲁班打大龙

from random import randint
class Sprite():
    def __init__(self, name, blood, strength):
        self.name = name
        self.blood = blood
        self.strength = strength
    def cal_health(self):
        return self.blood
    def take_demage(self, attack_sprite):
        demage = randint(attack_sprite.strength -5, attack_sprite.strength +5)
        self.blood -= demage
        print(f'{self.name} 你被 {attack_sprite.name}攻击, 受到{demage}点伤害, 还剩{self.blood}滴血')
        if self.cal_health() <=0:
            print(f"{self.name}你被杀死了, 胜败乃兵家常事, 请重新来过")
            return True
        else:
            return False
class Hero(Sprite):
    pass
class Monster(Sprite):
    pass
hero = Hero("小鲁班", 200, 20)
monster = Monster("大龙", 400, 9)
while True:
    is_moster_died = monster.take_demage(hero)
    if is_moster_died:
        break
    is_hero_died = hero.take_demage(monster)
    if is_hero_died:
        break



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值