类中的关系要理清,,,看清类的对象是谁,self是谁,就从谁开始找
python 3 中都是新式类,也就是默认继承object,不管你写不写,
而python2就不同了,写 上object就是新式类,不写就是经典类
继承多个类的时候
类方法的寻找顺序是从左边一直向上找,左边找不到,才到右边去找
class Base(object): # object可写,可不写
def __init__(self):
print("Base init")
def execute(self):
print("Base execute")
self.linux()
def linux(self):
print("Base linux")
class son(Base):
def linux(self):
print("son linux")
test = son()
print("----------------------------")
test.execute()
# 执行结果:
Base init
----------------------------
Base execute
son linux
分析,结果
test = son() # 类实例化时会执行 类的init 初始化方法,son中没有,就到父类去找
print("----------------------------")
test.execute() # son 中没有 execute 方法,到父类去找
'''
def execute(self): 执行 父类的 execute 方法,其中的 self == test
print("Base execute")
self.linux() 这里执行的是 test.linux() 方法,
首先又到 son 类中去寻找,所以执行的是 son 中的 linux 方法
'''
一个更乱的类执行顺序,,
class Bbh:
def server(self):
self.sz()
def sz(self):
self.xiaowen()
def process_request(self):
print('yun')
class Mr(Bbh):
def xiaowen(self):
self.process_request()
class Yun(Mr):
def process_request(self):
print('yun')
class Zzc(Yun):
pass
obj = Zzc()
obj.server()
执行顺序::

导入包
导入 py 文件
from src.plugins import disk
加载文件夹下的 disk.py 文件,加载到内存
导入文件夹(包,模块,类库等)
from src import plugins
加载文件夹下的 init.py 文件,加载到内存
如果 init.py 文件下封装了方法,用 plugins.pack() 运行(名字看你定义的了)
网友评论