关于python 继承

有如下的代码:

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)

然后代码的运行结果如下:

F:\python_code\test>python class_init.py
init in c1
init in p1
f1 in p2
f1 in p2
11
22
2

关于的代码的运行过程,我有以下的疑问,我在 c1__init__ 函数中会调用到p1.__init__(),然后会每次都是运行 c1.f1() 函数,没有运行 p1.f1() 的函数,在 p1 运行的 f1(),怎么也是 c1.f1()。为什么?

阅读 2.1k
1 个回答

p1.__init__(self,a,b)
这行代码中的self是c1的对象。所以传给p1里面的self也就是c1的呀。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题