Python說文解字 繼承過程中的引數集合

2022-09-18 10:18:30 字數 1692 閱讀 4189

1. 先看一段屬性繼承的**:

class

user:

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

class

user:

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機制的內部優化。...