日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python3中的類繼承你真的了解嗎_python

作者:ecre ? 更新時間: 2022-05-29 編程語言

之前一直對于python類的繼承機制認知的比較混亂,今天學習記錄一下。

(1)首先使用直接繼承的方式

class parent():
    def __init__(self):
        self.a="這是父類a"
        print("父類初始化")
    def fuc(self):
        print(self.a)
class child(parent):
    def __init__(self):
        print("子類初始化")
c=child()
c.fuc()

運行結果為:

子類初始化?
AttributeError: 'child' object has no attribute 'a'?
Process finished with exit code 1

可見子類沒有繼承父類中屬性

(2)在子類中定義屬性

class parent():
    def __init__(self):
        self.a="這是父類a"
        print("父類初始化")
    def fuc(self):
        print(self.a)
class child(parent):
    def __init__(self):
        self.a="這是子類a"
        print("子類初始化")
c=child()
c.fuc()

運行結果:

子類初始化
這是子類a

可見在子類中繼承了父類的方法

(3)如果想要繼承父類中的屬性,一般使用super方法:

class parent():
    def __init__(self):
        self.a="這是父類a"
        print("父類初始化")
    def fuc(self):
        print(self.a)
class child(parent):
    def __init__(self):
        super(child, self).__init__()
        print("子類初始化")
c=child()
c.fuc()

運行結果:

父類初始化
子類初始化
這是父類a

?使用super方法程序在實例化子類的時候會首先調用父類中__init__,并將屬性賦予子類

(4)如果需要在子類的__init__中傳入參數則可以這樣使用:?

class parent():
    def __init__(self):
        self.a="這是父類a"
        print("父類初始化")
    def fuc(self):
        print(self.a)
class child(parent):
    def __init__(self,m):
        super(child, self).__init__()
        print("子類初始化")
        self.m=m
c=child(1)
print(c.m)

運行結果:

父類初始化
子類初始化
1

(5)如果想要將參數傳入到父類中可以這樣使用:

class parent():
    def __init__(self,m):
        self.a="這是父類a"
        print("父類初始化")
        self.m = m
    def fuc(self):
        print(self.m)
class child(parent):
    def __init__(self,m):
        super(child, self).__init__(m)
        print("子類初始化")
c=child(1)
c.fuc()

運行結果:

父類初始化
子類初始化
1

?當子類中與父類中有同樣的屬性時子類中的屬性會覆蓋父類的屬性

總結

原文鏈接:https://blog.csdn.net/weixin_40676212/article/details/123753913

欄目分類
最近更新