python基础-类的继承

python

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

    继承的过程,就是从一般到特殊的过程.要实现继承,可以通过“继承”(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

"""

 多继承

# -*- coding:utf-8 -*-

__author__ = 'shisanjun'

class A(object):

def request(self):

print('A.request')

def finish(self):

print('A.finish')

class C(A):

def request(self):

self.process()

print('C.request')

def finish(self):

print('C.finish')

class B(object):

def request(self):

print('B.request')

def process(self):

print('B.process')

self.finish()

def finish(self):

print('B.finish')

class D(C, B):

pass

obj = D()

obj.request()

"""

B.process

C.finish

C.request

"""

以上是 python基础-类的继承 的全部内容, 来源链接: utcz.com/z/388289.html

回到顶部