python基础学习日志day6-类的继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础学习日志day6-类的继承相关的知识,希望对你有一定的参考价值。

 

继承:承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类.

    继承的过程,就是从一般到特殊的过程.要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现

    继承概念的实现方式主要有2类:实现继承、接口继承.

    实现继承是指使用基类的属性和方法而无需额外编码的能力

    接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构爹类方法)

 

组合方式实现多继承

# -*- coding:utf-8 -*-
__author__ = shisanjun

class School(object):
    def __init__(self,name):
        self.name=name

    def sayhi(self):
        print("school name",self.name)

class SchoolMember(object):

    menber=0 #公有属性
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
        self.enrool() #每个子类都运行

    def enrool(self):
        print(%s has enroll %self.name)
        SchoolMember.menber+=1 #累计增加,不能写this.menber+=menber这样写只会在子类调用的时候加1,没有传到父类

    def tell(self): #打印所有用户信息,实现如下
        print("-----info %s-----" %self.name)
        for v,k in self.__dict__.items(): #返回子类的 所有成员属性的字典
            print("%s:\t%s" %(v,k))

    def __del__(self):
        print("%s has del" %self.name)
        SchoolMember.menber-=1

class Teacher(SchoolMember):

    def __init__(self,name,age,sex,salary,course,school):
        #SchoolMember.__init__(self,name,age,sex) #经典类写法==SchoolMember.__init__(self,name,age,sex)
        super(Teacher,self).__init__(name,age,sex ) #新类式类写法
        self.salary=salary
        self.course=course
        self.school=school #组合继承,实现多继承

    def teach(self):
        print("school:%s teacher course %s" %(self.school.name,self.course))


class Student(SchoolMember):

    def __init__(self,name,age,sex,tuition,course):
        SchoolMember.__init__(self,name,age,sex)
        self.tuition=tuition
        self.course=course

    def pay_tuition(self):
        print("the student pay ",self.tuition)

school=School("南京大学")
t=Teacher("shi",23,"F",15000,"python",school) #组合继承,实现多继承
s=Student("san",26,M,3000,"python")
t.teach()

"""
shi has enroll
san has enroll
school:南京大学 teacher course python
shi has del
san has del

"""

 

以上是关于python基础学习日志day6-类的继承的主要内容,如果未能解决你的问题,请参考以下文章

python基础学习日志day6-类的方法

python基础学习日志day6-类的封装

python基础学习日志day6-面向对象

学习日志0820类的继承

day6 - 面向对象学习

Python学习之路-python基础课 (day6)