class Animal:标签:__,name,继承,self,11.2,init,hp,ad From: https://www.cnblogs.com/zhh0125/p/16666921.html
def __init__(self, name, hp, ad):
self.name = name
self.hp = hp
self.ad = ad
def eat(self):
'吃药方法'
self.hp += 5
print('%s吃药了%s剩余了%s血' % (self.name, self.name, self.hp))
class Person(Animal): # 声明一个类
def __init__(self, name, hp, ad, sex, job):
'初始化函数'
# 人特有的属性
self.sex = sex
self.job = job
# 下面调父类的属性
Animal.__init__(self, name, hp, ad)
def attack(self, dog):
'''人打狗,狗掉血'''
dog.hp = dog.hp - self.ad
print('%s攻击了%s,%s掉了%s血,还剩%s血' % (
self.name,
dog.name,
dog.name,
self.ad,
dog.hp))
class Dog(Animal): # 声明一个类
def __init__(self, name, kind, hp, ad):
'初始化函数'
# 狗特有的属性
self.kind = kind
# 下面调父类的属性
Animal.__init__(self, name, hp, ad)
def bite(self, person):
person.hp -= self.ad
print('%s咬了%s,%s掉了%s血,还剩%s血' % (
self.name,
person.name,
person.name,
self.ad,
person.hp))
zhangsan = Person('zhangsan', 200, 40, '不详', '射手')
lisir = Person('lisir', 400, 20, '男', '战士')
dog1 = Dog('旺财', '小土狗', 2000, 100)
dog2 = Dog('二哈', '哈士奇', 3000, 150)
dog1.bite(zhangsan)
lisir.attack(dog2)
zhangsan.eat()
dog1.eat()
# 总结:
# A类和B类都需要相同的方法
# 创建父类C,把相同的方法放到父类C中
# A类和B类 继承C类 A(C) B(C)
# A的对象和B的对象就可以调用C中的方法了
#
# A类和B类中有相同的方法,一部分功能相同,还有不同的部分
# 创建父类C,把相同的方法放到C类的方法中
# 在A类和B类保留不同的部分,然后在A类\B类中调用C类方法即可
# 练习:
class Role:
def __init__(self,name):
self.name =name
def show_course(self):
for item in Course.course_list:
print(item.name,item.price,item.period)
class Course:
course_list = []
def __init__(self, name, period, price):
self.name = name
self.period = period
self.price = price
class Student(Role):
def __init__(self,name):
# Role.__init__(self,name)
# super(Student,self).__init__(name)
# super第一个参数,当前所在的类
# super第二个参数,当前所在的对象
super().__init__(name)
class Manager(Role):
pass
python=Course('python','6个月',29800)
java=Course('java','6个月',27800)
Course.course_list.append(python)
Course.course_list.append(java)
banzhang=Student('班长')
banzhang.show_course()
laoding=Manager('老丁')
laoding.show_course()