python中子類繼承父類成員變量之間的取值邏輯---自創


python中子類繼承父類成員變量之間的取值邏輯

代碼:

# 定義父類person
class person():
def __init__(self,name,age,sex):
self.name="zhangxiao"
self.age='18'
self.sex=sex
def talk(self):
print("i want to speak something to yo!!")
# 定義子類chinese
class chinese(person):
def __init__(self,name,age,sex,language):
# 先繼承父類的構造方法的兩種方式 :
# super(chinese, self).__init__(name,age,sex)#2. 新式類的寫法:super(子類,self).__init__(參數1,參數2,....)
person.__init__(self,name,age,sex)#1.經典類的寫法: 父類名稱.__init__(self,參數1,參數2,...)
self.age=age # 定義時:此self為子類的實例,若有此定義則調用sex屬性時取的為子類實例化的參數;若未指定則傳入的為父類構造方法中寫定的參數
self.language="chinese"
def talk(self):
print("我說的是中國話!!")
c=chinese("xiaoli",'33','nan',"chinese")
print(c.name)#對應場景A
print(c.age)#對應場景B
print(c.sex)#對應場景C
print(c.talk())
總結:
A:若父類中初始化了成員變量,子類調用父類構造方法未覆蓋屬性(self.sex),則調用子類屬性時取值為父類中初始化的成員變量;
B:若父類中初始化了成員變量,若子類調用父類構造方法覆蓋屬性(self.sex)則取值為子類實例中傳入參數
C:若父類未初始化該成員變量則,無論子類中有無進行對父類構造方法進行屬性的覆蓋,均取子類實例中傳入的參數
D:對於方法則子類重寫父類方法,調用時直接覆蓋父類的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM