python3中的類繼承你真的了解嗎
更新時間:2022年03月27日 17:07:52 作者:ecre
這篇文章主要為大家詳細介紹了python3中的類繼承,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
之前一直對于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
當子類中與父類中有同樣的屬性時子類中的屬性會覆蓋父類的屬性
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
詳解從Django Rest Framework響應中刪除空字段
這篇文章主要介紹了詳解從Django Rest Framework響應中刪除空字段,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

