1. 先看一段屬性繼承的**:
classuser:
def __init__(self,name,age):
self.name =name
self.age =age
class
user1(user):
def __init__(self,name,age,height,weight):
self.height =height
self.weight =weight
# 此處像繼承父類的name 和 age
super().__init__(name, age)
user1 = user1('
thomas
',38,180,80
)print(user1.height)
print(user1.weight)
print(user1.name)
print(user1.age)
# 180
# 80
# thomas
# 38
說明1:當然這麼寫一點兒毛病都沒有,但是有乙個問題是,我們在子類繼承的時候還需要在寫明父類當中的具有的屬性name和age嘛?這樣寫有點兒麻煩。
說明2:我們如果有n個父類的引數,每次要繼承父類引數的時候不帶累死了,如果父類引數當中還有字典,字串等等。如何處理?
說明3:其實這裡我們就用到了*args,**kwargs可變長引數的妙用了。我們定義父類有n個不同型別的引數,再來看一下,可以如何簡單的應用。
更改**2
classuser:
def __init__(self,name,age,address = '
qingdao
',dicts = ):
self.name =name
self.age =age
self.address =address
self.dicts =dicts
class
user1(user):
def __init__(self,height,weight,*args,**kwargs):
super().__init__(*args,**kwargs)
self.height =height
self.weight =weight
user1 = user1(180,80,'
thomas
',38
)print(user1.height)
print(user1.weight)
print(user1.name)
print(user1.age)
print(user1.address)
print(user1.dicts)
# 180
# 80
# thomas
# 38
# qingdao
#
說明1:很牛x吧?其實我們不用具體的說明父類有哪些屬性引數值,用不定長引數就搞定了,這樣簡寫了很多**量:記住:super().__init__(*args,**kwargs)
說明2:但是注意一點。*args和**kwargs要寫到最後。而且在子類的建構函式上也要寫上這兩個東西。
Python說文解字 defaultdict
1.這個建構函式需要乙個函式作為引數,每當訪問乙個字典中不存在的鍵時,將會不帶引數的呼叫這個函式,並將結果設定為預設值。2.眾所週期,如果訪問字典中不存在的鍵時,會引發keyerror異常。其實這個方法主要是用來統計計數的 語法格式 collections.defaultdict default f...
Python說文解字 main
1.main函式 我們知道很多的程式語言都要寫乙個main函式,比如在c 中main函式還需要大寫。很多人疑惑為什麼要寫這麼乙個main函式。其實這就是好比我們在建了一排房子,你從哪個門都可以進入,這就是不寫main函式的時候。在python中如果我們不寫main函式 定義乙個檔案house1.py...
Python說文解字 雜談08
1.python變數到底是什麼?python和j a中的變數本質不一樣,python的變數實質是乙個指標 int str,便利貼 a 1 1.a貼在1上面 2.它的過程是先生成物件,然後貼便利貼。3.is 是指的標籤貼是否一樣。a 1 b 1 這個是一樣,用的是小整數的內部inter機制的內部優化。...