Home  >  Article  >  Backend Development  >  A brief analysis of python inheritance issues

A brief analysis of python inheritance issues

高洛峰
高洛峰Original
2017-03-02 16:01:281347browse

This article mainly introduces relevant information on in-depth analysis of Python inheritance issues. It is very good. Friends who are interested should take a look.

The following code is included:

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)

Then the running result of the code is as follows:

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

Regarding the running process of the code, I have the following questions. In the __init__ function of c1, p1.__init__() will be called, and then the c1.f1() function will be run every time. There is no function that runs p1.f1(). How can f1() run in p1? c1.f1(). Why?

Cause analysis:

p1.__init__(self,a,b)

self in this line of code is The object of c1. So the self passed to p1 is also c1.

The above content introduces the python inheritance problem to you through the code. I hope it will be helpful to you!

For more articles related to a brief analysis of python inheritance issues, please pay attention to the PHP Chinese website!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn