python子類調用父類方法
⑴ python 中怎樣調用父類方法
子類調用父類函數有以下方法:
直接寫類名調用
用 super(type, obj).method(arg)方法調用。
在類定義中調用本類的父類方法,可以直接用super().method(arg)
1
2
3
4
5
6
7
8
9
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) # 2
super().method(arg) # 3
⑵ 如何在Python中調用父類的同名方法
你好,請看下面的例子和說明:python中類的初始化方法是__init__(),因此父類子類的初始化方法都是這個,如果子類不實現這個函數,初始化時調用父類的初始化函數,如果子類實現這個函數,就覆蓋了父類的這個函數,既然繼承父類,就要在這個函數里顯式調用一下父類的__init__(),這跟C++,jAVA不一樣,他們是自動調用父類初始化函數的。調用父類函數有以下方法:class A:def method(self, arg):pass class B(A):def method(self, arg):# A.method(self,arg) # 1# super(B, self).method(arg) #2super().method(arg) #31.直接寫類名調用2.用super(type,obj).method(arg)方法調用。3.在類定義中調用本類的父類方法,可以直接super().method(arg).在代碼中調用對象的父類的方法的示例:ob = B()super(B,ob).method(arg) #調用class B的父類class A的method。初始化中調用父類初始化方法示例:class B(A):
⑶ python繼承父類 怎麼引用
子類調用父類函數有以下方法:
直接寫類名調用
用 super(type, obj).method(arg)方法調用。
在類定義中調用本類的父類方法,可以直接用super().method(arg)
1
2
3
4
5
6
7
8
9
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) # 2
super().method(arg) # 3
⑷ python子類如何才能調用父類的方法
.直接寫類名調用
2.用 super(type, obj).method(arg)方法調用。
3.在類定義中調用本類的父類方法,可以直接 super().method(arg).
在代碼中調用對象的父類的方法的示例:
ob = B()super(B,ob).method(arg) #調用class B的父類class A的method。
初始化中調用父類初始化方法示例:class B(A):def __init__(self):super().__init__()
⑸ Python子類調用父類方法或子類定義的方法輸出會多出個'None'
我覺得最佳的回答的是不對的, 在python中若是函數沒有定義return的結果,則會默認返回一個none
deffunc():
a=1
b=2
a=func()
print(a)
>>>None
在官方文檔中也有說明的,而你列印出none的原因就是因為你在類的方法
中直接列印了字元串沒有返回值,將方法中的pring改成return即可
⑹ Python中如何使具有相同父類中的兩個子類之間進行方法調用
子類調用父類函數有以下方法:
直接寫類名調用
用 super(type, obj).method(arg)方法調用。
在類定義中調用本類的父類方法,可以直接用super().method(arg)
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) # 2
super().method(arg) # 3
⑺ python子類調用父類方法出現None
None是tell函數執行的結果, 因為它沒有return所以返回值是None
class類名宜採用駝峰結構, 首字母應該大寫
⑻ Python 子類繼承父類後,可以調用父類中的函數嗎
classax:
defbx(self):#函數定義要有括弧,類方法最少要有一個參數
print'我出來了'
classcx(ax):
xxx='ssss'
dx=cx()#生成類實例要有括弧
dx.bx()
⑼ python 子類調用父類中的方法的一個int值
這是類的繼承問題。先說一下,對於python來說定義函數要用def來定義,沒有這個關鍵字無法定義函數。
然後通常,如果父類中有調用self.a,那麼這個就是類的屬性,也就是說,子類中自然存在。直接在子類中直接調用即可,如果在父類中只定義了一個局部變數,那麼子類是獲取不到的。不過可以定義類方法,直接調用類方法獲取你想要的值。
方法1.
classA:
defget_A(self):
self.a=1
print(self.a)
classB(A):
defget_B(self):#self不是python關鍵字,建議類方法用self作為第一個參數
self.get_A()
if__name__=='__main__':
b=B()
b.get_B()
#方法2
classA:
@classmethod
defget_A(cls):
a=1
returna
classB(A):
defget_B(self):#self不是python關鍵字,建議類方法用self作為第一個參數
print(A.get_A())
if__name__=='__main__':
b=B()
b.get_B()
⑽ python 子類怎麼調用父類方法
兩種方法解決:
- 第一種
class A:
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#這一行解決了問題
A.__init__(self)
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第二種:
#父類需要繼承object對象
class A(object):
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#這一行解決問題
super(B,self).__init__()
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PS:讓類A繼承自object類,這樣才能使用super函數,因為這是python的「新式類」支持的特性。當前的class和對象可以作為super函數的參數使用,調用函數返回的對象的任何方法都是調用超類的方法,而不是當前類的方法。
優劣:
- 方法一更直觀,方法二可以一次初始化所有超類
- super函數比在超類中直接調用未綁定方法更直觀,但是其最大的優點是如果子類繼承了多個父類,它只需要使用一次super函數就可以。然而如果沒有這個需求,直接使用A.init(self)更直觀一些。