1. (繼承)
    1. 什麼是繼承?
    在程式中繼承是一種新建子類的方式,新建立的類稱之為子類\派生類,被繼承的類稱之為父類\基\超
    繼承描述的是一種遺傳關係,子類可以重用父類的屬性
  2.  
  3. 2. 為何用繼承?
    減少類與類之間程式碼冗餘的問題
  4.  
  5. 3. 如何繼承
    先抽象再繼承
  1. python中繼承的特點?單繼承&多繼承
    class Parent1(object):
    pass
  2.  
  3. class Parent2:
    pass
  4.  
  5. class Sub1(Parent1): #單繼承
    pass
  6.  
  7. class Sub2(Parent1,Parent2): #多繼承
    pass
  8.  
  9. print(Sub1.__bases__)
    print(Sub2.__bases__)
  10.  
  11. print(Parent1.__bases__)
    print(Parent2.__bases__)
  12.  
  13. x=2
    class Foo:
    # x=1
    pass
    obj=Foo()
    # obj.x=3
    print(obj.x)
  14.  
  15. python2python3在繼承上的區別
    新式類:但凡繼承object類的子類,以及該子類的子子類,...都稱之為新式類
    經典類:沒有繼承object類的子類,以及該子類的子子類,...都稱之為經典類
  16.  
  17. 只有在python2中才區分新式類與經典類
  18.  
  1. # 在子類派生出的新功能中如何重用父類的功能:
    # 方式一: 指名道姓地訪問某一個類中的函式,與繼承無關
    # 方式二: 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)
  2.  
  3. #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
  4.  
  5. c=C()
    c.test()
    print(C.mro())