单继承
总结:
A类和B类都需要相同的方法
创建父类C类,把相同的方法放到父类C类中
A类和B类 继承C类 A(C) B(C)
A的对象和B的对象就可以调用C中的方法了
A类和B类中有相同的方法,一部分功能相同,还有一部分不同
创建父类C类,把相同的方法放到C类的方法中
在A类和B类中保留不同的部分,然后在A类和B类中调用C类方法即可
在子类中调用父类(3种写法)
1.父类.__init__(self,父类属性)
2.super(Student, self).__init__(父类属性)
super(当前所在的类,当前所在对象)
3.super().__init__(父类属性)
#人狗大战 # class Animal: # 父类 将公共的属性和方法定义在父类里 # def __init__(self,name,hp,ad): # self.name = name # self.hp = hp # self.ad = ad # # def eat(self): # '吃药方法' # self.hp+=5 # print('%s吃药了,还剩%s血'%(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 = person.hp - self.ad # print('%s攻击了%s,%s掉了%s的血,还剩%s血' % ( # self.name, # person.name, # person.name, # self.ad, # person.hp)) # # zhangsan=Person('张三',200,40,'男','射手') # lisi=Person('李四',300,30,'男','战士') # # tg=Dog('天狗','拉布拉多',1000,50) # jq=Dog('警犬','藏獒',800,60) # zhangsan.attack(tg) # jq.bite(lisi) # # lisi.eat() # tg.eat()

练习题:课程类,学生类和管理员类
#练习 class Course: def __init__(self,name,period,price): self.name=name self.period=period self.price=price class Actor: def __init__(self, name): self.name = name def show_course(self,k): # 查看指定课程 for i in course_list: if k in i.name: print(i.period) print(i.price) class Student(Actor): def __init__(self,name): # Actor.__init__(self,name) # super(Student, self).__init__(name) #super(当前所在的类,当前所在对象) super().__init__(name) class Manger(Actor): # 没有单独的属性,直接可以不写 pass python=Course('python','6 months',29800) java=Course('java','5 months',27800) zhangsan=Student('张三') admin=Manger('管理员') course_list=[python,java] zhangsan.show_course('java') python.price=10000 admin.show_course('python')
浙公网安备 33010602011771号