有如下的代码:
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继承问题,希望对大家有所帮助!