python中super
❶ python,super(Bullet,self)是什麼意思
Bullet的父類是Sprite,
super(Bullet,self).__init__() 的意思是初始化父類是python 2.7版本。在python 3中也可以簡寫為super().__init__()
當子類有構造函數的時候,繼承父類後,如果想要調用父類的方法或者屬性就需要在子類構造函數中初始化父類
如果子類沒有新的構造函數,那麼繼承後就可以直接使用父類的方法或屬性,而不需要在子類構造函數中重新初始化父類
❷ python 關於super的疑問
MRO(Method resolution order)是python用來解析方法調用順序的,mro中記錄了一個類的所有基類的類類型序列,super不是簡單地調用基類的方法,而是按照MRO中的順序來調用類的方法。
使用super()時,應該在所有類中使用,否則就可能發生有的類構造函數沒有調用的情況。
#!/usr/bin/python
# -*- coding: utf-8 -*-
class A(object):
def __init__(self):
print 'A __init__'
super(A, self).__init__()
print 'leave A'
class C(object):
def __init__(self):
print 'C __init__'
super(C, self).__init__()
print 'leave C'
class B(A,C):
def __init__(self):
print 'B __init__'
super(B, self).__init__()
print 'leave B'
class D(B):
def __init__(self):
print 'D __init__'
super(D, self).__init__()
print 'leave D'
if __name__ == '__main__':
D()
輸出為:
D __init__
B __init__
A __init__
C __init__
leave C
leave A
leave B
leave D
❸ python中super的使用
Yes, and since py3.5, `super(Man, self).__init__(name, has_wife)` can be replaced as below:
super().__init__(name,has_wife)
❹ Python請問以下代碼類名中的(list)和方法中的super是什麼意思
super是父類,也就是list
❺ python的類和對象中的super函數的問題
問題一
因為在B類中調用了super方法,所以沒有執行完B類就去執行C類的程序
super方法在多重繼承程序中的調用順序,採用的是C3演算法(在python3中)。
C3演算法的規則如下
①.從底層開始,選擇入邊為零的點。
②.從左到右。
③深度探索。但受限於②規則。
每一個類都可以用mro函數查看自己的繼承順序(MRO全稱Method Resolution Order,就是用來定義繼承方法的調用順序)
對於你的程序
分析
①規則。得到D類,去掉D類以後,入邊為零的是B類和C類
②規則。選擇B類,去掉B類後,入邊為零的只有C類。結論是D–>B–>C–>A。
在d=D()語句前加print(D.mro()),就可以列印出D類的繼承順序
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
問題二
python3的繼承不同於普通的繼承,super函數已經考慮到了重復繼承的問題,所以對於A類只訪問一次
❻ python中super()函數的意義,最好淺顯易懂,以及用法,謝謝
調用父類, 和parent一個意思. 只不過python使用的繼承方式有點特別, 所以用起來有點特別
php"><?php
classA
{
functionhello()
{
print"A ";
}
}
classSonOfA
{
functionhello()
{
parent::hello();
}
}
那麼在python里就是通過 super(A, self) 獲得指向父類的指針(當成指針好了), 然後調用hello.
super(A,self).hello()#相當於呼叫A的hello
#據說python3,可以
super().hello()
❼ python中的super()是什麼意思呢
super就是在子類中調用父類方法時用的。
classFooParent(object):
def__init__(self):
self.parent='I'mtheparent.'
print'Parent'
defbar(self,message):
printmessage,'fromParent'
classFooChild(FooParent):
def__init__(self):
super(FooChild,self).__init__()#調用父類初始化方法
print'Child'
defbar(self,message):
super(FooChild,self).bar(message)#調用父類bar方法
print'Childbarfuction'
printself.parent
if__name__=='__main__':
fooChild=FooChild()
fooChild.bar('HelloWorld')
如果解決了您的問題請採納!
如果未解決請繼續追問
❽ python語句(具體如下)super的用法不理解,求大神指教!本人初學者,剛剛開始學習中。。。
super().xxx的作用是調用父類的xxx方法,在重寫xxx方法時,這個方法的內容已經和原方法完全無關了,因此如果希望在重寫之後仍然能執行原方法的邏輯,就需要使用super().xxx來調用父類的原方法。