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

"""
时间: 2024-10-05 14:20:26

python基础学习日志day6-类的继承的相关文章

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

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

什么是面向对象编程 OOP编程是利用"类"和对象来创建各种模型来实现对真实世界的描述. OOP具有可维护性和可扩展性 二:面向对象有那些特性 1)CLASS类:一个类是对拥有相同属性的对象的抽象.类拥有类的属性和类的方法. 2)OBJECT对象:一个对象即是一个类的实例化的实例.这个过程就实例化. 3)Encapsulation封装:在类中对数据的赋值,内部调用对外部是透明. 4)Inheritance继承:一个类可以派生成子类,在这个父类的定义的属性和方法自动被子类继承 5)Poly

学习日志0820类的继承

1 什么是继承 继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类 继承的特性:子类可以遗传/重用父类的属性 python中继承的特点: 1 python中一个子类可以同时继承多个父类 2 在继承的背景下去说,python中的类分为两种: 新式类,经典类: 新式类:但凡继承了object的类Foo,以及该类的子类都是新式类 在python3中都是新式类,默认继承object 经典类:没有继承object的类,以及该类的子类 在子类派生出的新方法中重用父类的功能的

python基础学习日志day5---os模块

python os模块提供对操作系统进行调用的接口. # -*- coding:utf-8 -*-__author__ = 'shisanjun' import os print(os.getcwd())#获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("F:\python运维开发\day4")#改变当前的工作目录:相当于shell下cdprint(os.getcwd())#结果F:\python运维开发\day4 os.chdir(os.curdir)#返回

python基础学习日志day6-类的经典类vs新式类

经典类VS新式类区别 1)写法新式类class Person(object):#new style 经典类class Persion: #classical style 2)调用父类 新式写法用super 经典类直接写父类类名 3)多继承时继承顺序python3使用的是广度查询,所以两个都一样. 经典类python2是深度查询.所以经典类python2多继承是有BUG class D(B,C) D-->B-->A--C # -*- coding:utf-8 -*- __author__ = '

python基础学习日志day5---logging模块

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,下面我们看一下怎么用. 最简单用法 1 2 3 4 5 6 7 8 import logging logging.warning("user [alex] attempt

python基础学习日志day7-类的反射

1)python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr, 改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. # -*- coding:utf-8 -*- __author__ = 'shisanjun' class Foo(object): def __init__(self): self.name="s" def func(self): return 'func' obj=Foo() #

python基础学习日志day7-类的起源

Python中一切事物都是对象. class Foo(object): def __init__(self,name): self.name = name f = Foo("alex") f对象是FOO类的一个实例,Foo类对象是type类的一个实例. print(type(f)) print(type(foo)) # -*- coding:utf-8 -*- __author__ = 'shisanjun' class Foo(object): def func(self): pri

python基础学习日志day5--subprocess模块

可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*           --废弃 commands.*      --废弃,3.x中被移除 以上执行shell命令的相关的模块和函数的功能均在 subprocess 模块中实现,并提供了更丰富的功能 call 父进程等待子进程完成返回退出信息(returncode,相当于Linux exit code) 执行命令,返回状态码,shell=True是表示