(继承)
1. 什么是继承?
在程序中继承是一种新建子类的方式,新创建的类称之为子类\派生类,被继承的类称之为父类\基类\超类
继承描述的是一种遗传关系,子类可以重用父类的属性

2. 为何用继承?
减少类与类之间代码冗余的问题

3. 如何继承
先抽象再继承

在python中继承的特点?单继承&多继承
class Parent1(object):
pass

class Parent2:
pass

class Sub1(Parent1): #单继承
pass

class Sub2(Parent1,Parent2): #多继承
pass

print(Sub1.__bases__)
print(Sub2.__bases__)

print(Parent1.__bases__)
print(Parent2.__bases__)

x=2
class Foo:
# x=1
pass
obj=Foo()
# obj.x=3
print(obj.x)

python2与python3在继承上的区别
新式类:但凡继承object类的子类,以及该子类的子子类,...都称之为新式类
经典类:没有继承object类的子类,以及该子类的子子类,...都称之为经典类

只有在python2中才区分新式类与经典类


# 在子类派生出的新功能中如何重用父类的功能:
# 方式一: 指名道姓地访问某一个类中的函数,与继承无关
# 方式二: super(OldboyTeacher,self),在python3中super可以不传参数,调用该函数会得到一个特殊的对象,该对象是专门用来访问父类中属性,
# 强调:super会严格参照类的mro列表依次查找属性
# class OldboyPeople:
# school = 'Oldboy'
# def __init__(self, name, age, gender):
# self.name = name
# self.age = age
# self.gender = gender
#
# class OldboyTeacher(OldboyPeople):
# # tea, 'egon', 18, 'male', 10, 3000
# def __init__(self, name, age, gender,level,salary):
# OldboyPeople.__init__(self, name, age, gender)
# # super(OldboyTeacher,self).__init__(name, age, gender)
#
# self.level=level
# self.salary=salary
#
# def score(self,stu,num):
# stu.num=num
# print('老师%s给学生%s打分%s' %(self.name,stu.name,num))
#
# tea=OldboyTeacher('egon',18,'male',10,3000) #__init___(tea,'egon',18,'male',10,3000)
# print(tea.__dict__)
# # print(stu.school)


#A没有继承B,
class A:
def test(self):
print('A.test')
super().test()
class B:
def test(self):
print('from B')
class C(A,B):
pass

c=C()
c.test()
print(C.mro())
posted on 2018-10-23 15:32  小轩灬  阅读(144)  评论(0编辑  收藏  举报