從Python中的子類調用父類的方法?在Python中創(chuàng)建簡單的對象層次結構時,我希望能夠從派生類調用父類的方法。在Perl和Java中,有一個關鍵字(super)。在Perl中,我可能會這樣做:package Foo;sub frotz {
return "Bamf";}package Bar;@ISA = qw(Foo);sub frotz {
my $str = SUPER::frotz();
return uc($str);}在python中,似乎必須從子類中顯式地命名父類。在上面的例子中,我必須做一些類似的事情Foo::frotz().這似乎不對,因為這種行為使得很難建立深層的層次結構。如果子類需要知道哪個類定義了繼承的方法,那么就會產(chǎn)生各種信息痛苦。這是python中的一個實際限制,還是我的理解上的空白,還是兩者兼而有之?
3 回答

湖上湖
TA貢獻2003條經(jīng)驗 獲得超2個贊
super(type[, object-or-type])
返回代理對象,該對象將方法調用委托給類型為類型的父類或同級類。這對于訪問已在類中重寫的繼承方法非常有用。搜索順序與getattr()使用的順序相同,只是類型本身被跳過。
class A(object): # deriving from 'object' declares A as a 'new-style-class' def foo(self): print "foo"class B(A): def foo(self): super(B, self).foo() # calls 'A.foo()'myB = B()myB.foo()

月關寶盒
TA貢獻1772條經(jīng)驗 獲得超5個贊
ImmediateParentClass.frotz(self)
frotz
super
AnyClass.whatever
whatever
AnyClass
AnyClass
添加回答
舉報
0/150
提交
取消