python子類重用父類的兩種方式

2021-08-21 01:43:21 字數 1953 閱讀 8266

#在子類派生的新方法中重用父類功能的兩種方法

# 方式一:與繼承無關

# 指名道姓法,直接用類名.函式名的方法

# 注意只能當普通函式用,需要把所有的值傳入

classoldboypeople:

school='oldboy'def__init__(self,name,age,***):

self.name=name

self.age=age

self.***=***

classoldboystudent(oldboypeople):

def__init__(self,name,age,***,stu_id):

oldboypeople.__init__(self,name,age,***)#指明道姓法

self.stu_id=stu_id

defchoose_course(self):

print('%s is choosing course'%self.name)

# 方式二:嚴格來繼承屬性查詢關係

# super()會得到乙個特殊的物件,該物件就是專門用來訪問父類中的屬性的(按照繼承的關係 )

## super().__init__(不用為self傳值)

## 注意:super的完整的用法是super(自己的類名,self),在python2中要寫完整,而在

# python3則不用,直接用super()

classoldboypeople:

school='oldboy'def__init__(self,name,age,***):

self.name=name

self.age=age

self.***=***

classoldboystudent(oldboypeople):

def__init__(self,name,age,***,stu_id):

super(oldboystudent,self).__init__(name,age,***)

self.stu_id=stu_id

defchoose_course(self):

print('%s is choosing course'%self.name)

stu1=oldboystudent('林',18,'male',3)

print(stu1.__dict__)

print(oldboystudent.mro())

classa:

deff1(self):

print('a.f1')

classb:

deff2(self):

super().f1()#按c的查詢順序找

print('b.f2')

classc(b,a):

passobj=c()

print(c.mro())

obj.f2()

#c->b->a->object

在子類中重用父類的屬性

在子類派生出的新的方法中重用父類的方法,有兩種實現方式 一 指名道姓 不依賴繼承 class hero def init self,nickname,life value,aggresivity self.nickname nickname self.life value life value se...

繼承父類的兩種情況

在as3中如果繼承的子類中 1.沒有加入建構函式,子類將會呼叫父類的建構函式 2.子類中有建構函式,但是沒有呼叫super 同樣子類會呼叫父類的建構函式 看下面的例子1 package private function inita void package private function init...

python 子類與父類

coding utf 8 建立乙個空類 class person pass someone person 加入初始化方法 class person def init self 第乙個引數必須為self pass 為初始化方法新增額外引數 class person def init self,name...