单继承

总结:
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')

 

posted @ 2022-07-04 19:02  爱coding的果妈  阅读(28)  评论(0)    收藏  举报