继承语法
# 类和类之间的一种关系, 子类可以继承父类的所有非私有属性和方法
# 私有属性和方法只能在本类里面使用, 不能分享给子类
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