有如下的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class p1:
def __init__( self ,a,b):
print ( "init in p1" )
self .a1 = a
self .b1 = b
self .f1()
def f1( self ):
print ( "f1 in p1" )
class c1(p1):
def __init__( self ,a,b,c = 2 ):
print ( "init in c1" )
p1.__init__( self ,a,b)
self .c1 = c
self .f1()
def f1( self ):
print ( "f1 in p2" )
class c2(c1):
pass
c = c2( 11 , 22 )
print (c.a1)
print (c.b1)
print (c.c1)
|
然后代码的运行结果如下:
1
2
3
4
5
6
7
8
|
关于的代码的运行过程,我有以下的疑问,我在 c1 的 __init__ 函数中会调用到p1.__init__(),然后会每次都是运行 c1.f1() 函数,没有运行 p1.f1() 的函数,在 p1 运行的 f1(),怎么也是 c1.f1()。为什么?
原因分析:
p1.__init__(self,a,b)
这行代码中的self是c1的对象。所以传给p1里面的self也就是c1的呀。
以上内容所述通过代码给大家介绍了python继承问题,希望对大家有所帮助!