面向对象 - 继承性
生活随笔
收集整理的這篇文章主要介紹了
面向对象 - 继承性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
面向對象 - 繼承性
# cheer_xiong # (`?ω?′) python# IDE:就是用啥軟件開發# 繼承 """ 就是新建類的一種方式,繼承了一個類,類中的屬性和方法就在子類中 父類/基類 子類/派生類 新式類 : 只要繼承了object類,就是新式類,在py3中,默認都繼承object類在py2中,需要顯示指定繼承object 經典類 : 沒有繼承object類,就是經典類py3中沒有經典類py2中才有 繼承介紹:如何使用繼承class 類名(父類)pass新式類和經典類利用繼承減少代碼冗余# 相同屬性可以定義一個父類用來給其他子類調用,減少代碼行數# 并且調用還是和之前一樣重用父類查找方式一:涉及到屬性查找順序 先找對象,對象沒有去類中,找不到去父類,找不到就報錯但是涉及到多個父類繼承,這個就引出以下|重用父類查找方式二:類實例化就會自動調用__init__,如果沒有,就去父類中找多層繼承:class A:a = 'aaa'class B(A):a = 'bbb'class C(B):a = 'ccc'class D():pass# 往上一集查找多繼承:class A:a = 'aaa'class B:a = 'bbb'class C:a = 'ccc'class D(A,B,C):pass# A->B->C 根據從左到右找# 繼承的菱形問題:新式類和經典類是不一樣的*必須都繼承一個類,并且不是object類,構成一個菱形*新式類:廣度優先,最后一個先不找,去找其他的,最后找最后一個經典類:深度優先,一條道找到底# mro 列表,繼承順序查找列表(只在新式類中有)print(類名.mro())print(類名.__mro__) # 相同重用父類方法的第一種方式:第一種方法和定義父類沒有多大關系,因為定不定一都可以使用 指名道姓 的方式調用和繼承沒有關系class A:def __init__(self, name, age):self.name = nameself.age = ageclass B:def __init__(self, name, age, price):A.__init__(self, name, age)self.price = priceb = B('xc', 18, 100)print(b.name)print(b.age)重用父類方法的第二種方式:使用super(),需要繼承父類才能調用父類的元素,還有一點就是super是嚴格按照 mro 來找元素了。class A:def __init__(self, name, age):self.name = nameself.age = ageclass B(A):def __init__(self, name, age, price):super().__init__(name, age)self.price = priceb = B('xc', 18, 100)print(b.name)print(b.age)"""轉載于:https://www.cnblogs.com/xiongchao0823/p/11418908.html
總結
以上是生活随笔為你收集整理的面向对象 - 继承性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 万众期待的kintone开发账号免费开放
- 下一篇: numpy模块学习