深入浅析python继承问题

yipeiwu_com6年前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()。为什么?

原因分析:

p1.__init__(self,a,b)

这行代码中的self是c1的对象。所以传给p1里面的self也就是c1的呀。

以上内容所述通过代码给大家介绍了python继承问题,希望对大家有所帮助!

相关文章

Python使用lambda表达式对字典排序操作示例

本文实例讲述了Python使用lambda表达式对字典排序操作。分享给大家供大家参考,具体如下: lambda表达式也常用于字典排序,既然写到字典排序,那就把按键排序和按值排序都写写好了...

python通过cookie模拟已登录状态的初步研究

python通过cookie模拟已登录状态的初步研究

对于那些需要在登录环境下进行的爬虫操作,模拟登陆或伪装已登录状态是一个刚需。 分析了网上关于模拟登录的例子,很多都基于用户名/密码发起一个post请求,遇到有图片验证码的,比较理想的方法...

Python中文件遍历的两种方法

关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。 方法一:利用os.walk os.walk可以自顶向下或...

在windows下快速搭建web.py开发框架方法

在windows下快速搭建web.py开发框架方法

  用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py。它由一...

Python3导入CSV文件的实例(跟Python2有些许的不同)

导入CSV文件导入数据的步骤 ①打开xxx.csv文件 ②首先读取文件头 ③然后读取剩余头 ④当发生错误时抛出异常 读取完所有内容后,打印文件头和剩余所有行 代码: import...