在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ 關(guān)于python中類的繼承及self

關(guān)于python中類的繼承及self

關(guān)于python中類的繼承及self
如下,如果調(diào)用student類,則可以正常運(yùn)行,但是如果去掉consumer.__init__(self, fee)中的self,將其改成consumer.__init__(fee),則不能正常調(diào)用,會(huì)顯示consumer中缺少參數(shù)。但是,person類的調(diào)用缺沒(méi)問(wèn)題。
如下,我定義三個(gè)類:

class person(object):
    def __init__(self, name, sex='U'):
        self.name = name
        self.sex = sex
        print('the one is %s' % self.name)

class consumer(object):
    def __init__(self, fee):
        self.fee = fee
        print('the one\'s consumer is %d' % fee)

class student(person, consumer):
    def __init__(self, name, score, fee, sex):
        super(student, self).__init__(name, sex)
        consumer.__init__(self, fee)

----------------------------分割一下----------------------------------------
補(bǔ)充一下描述好了,之前沒(méi)太說(shuō)清楚。這在python3中是有效的,然后我提這個(gè)問(wèn)題的主要目的是要搞清楚為什么會(huì)出現(xiàn)在super中有效而下面一個(gè)consumer.__init__中卻無(wú)效的問(wèn)題?有沒(méi)有大神給解釋下?

回答
編輯回答
焚音
但是,person類的調(diào)用缺沒(méi)問(wèn)題。

并沒(méi)有。一樣有問(wèn)題。


然后我提這個(gè)問(wèn)題的主要目的是要搞清楚為什么會(huì)出現(xiàn)在super中有效而下面一個(gè)consumer.__init__中卻無(wú)效的問(wèn)題?

super 中是一個(gè) bound method ,而 consumer.__init__unbound method 。

關(guān)于 boundunboundhttps://stackoverflow.com/que...

上面,這個(gè)答案是最好的:

clipboard.png

2018年9月22日 00:16
編輯回答
貓小柒

子類重寫(xiě)了父類方法,又需要父類方法中的功能,此時(shí)有兩種方式調(diào)用父類方法中的功能:
super(student, self).__init__(name, sex)和consumer.__init__(self, fee)
前一種方式中,super后面的兩個(gè)參數(shù)都可以省略,init方法中的參數(shù)不能省略
后一種方式中,init方法的中參數(shù)不能省略

2017年10月11日 22:40