pythonにおけるsuperの使い方[探索4]
10438 ワード
super
superはシードクラスが親クラスを呼び出す方法で、単一継承時にsuperが取得したクラスはちょうど親クラスですが、マルチ継承時にsuperが取得したのは継承順序の次のクラスです.ブログから学ぶ:https://www.jianshu.com/p/8ddb595628d1多継承関係は以下のように仮定する:Base親A B子1 C子2
別の例:https://www.jb51.net/article/128571.htm
注:クラスをインスタンス化した後、メソッドの参照を行う場合、最初のステップは必ず実行されます.init__()ですが、継承が存在する場合は、親クラスの_init__()は機能しません.継承に使用する初期化データはすべてサブクラスです.
私の今の研究の方向は:画像の意味の分割、もし志を同じくする友达があれば、チームを组んで学ぶことができます[email protected] qq:1355365561
superはシードクラスが親クラスを呼び出す方法で、単一継承時にsuperが取得したクラスはちょうど親クラスですが、マルチ継承時にsuperが取得したのは継承順序の次のクラスです.ブログから学ぶ:https://www.jianshu.com/p/8ddb595628d1多継承関係は以下のように仮定する:Base親A B子1 C子2
class Base(object):
def __init__(self):
print('Base')
class A(Base):
def __init__(self):
print('A')
super(A,self).__init__()
print('A1')
class B(Base):
def __init__(self):
print('B')
super(B,self).__init__()
print('B1')
class C(A,B):
def __init__(self):
print('C')
super(C,self).__init__()
print('C1')
C()
:
C
A
B
Base
B1
A1
C1
<__main__.C at 0x7f116638fbe0>
別の例:https://www.jb51.net/article/128571.htm
class A(object):
def __init__(self):
self.n = 10
def minus(self, m): #step4, object,n=15
self.n -= m #step7,n=8-2=6
class B(A):
def __init__(self):
self.n = 7
def minus(self, m): #step2, A,n=15
super(B,self).minus(m)
self.n -= 2 #step6,n=10-2=8
class C(A):
def __init__(self):
self.n = 12
def minus(self, m):
super(C,self).minus(m) #step3, A,n=15
self.n -= 5 #step5,n=15-5=10
class D(B, C):
def __init__(self):
self.n = 15
def minus(self, m):
super(D,self).minus(m) #step1, B, n=15
self.n -= 2 #step8,n=6-2=4
d=D() # D
d.minus(2) # D m=2
print(d.n)
:
4
:
D-B-C-A-C-B-A-D
注:クラスをインスタンス化した後、メソッドの参照を行う場合、最初のステップは必ず実行されます.init__()ですが、継承が存在する場合は、親クラスの_init__()は機能しません.継承に使用する初期化データはすべてサブクラスです.
私の今の研究の方向は:画像の意味の分割、もし志を同じくする友达があれば、チームを组んで学ぶことができます[email protected] qq:1355365561