当前位置:首页>python>Python面向对象:继承---单继承与多继承的MRO算法

Python面向对象:继承---单继承与多继承的MRO算法

  • 2026-06-30 10:51:14
Python面向对象:继承---单继承与多继承的MRO算法

你一定写过这样的代码:定义类时,在类名后面加括号,括号里写上另一个类,比如class Dog(Animal):;也可能见过一个类继承多个类,比如class Child(Father, Mother):

很多新手学继承,只停留在“单继承好用、多继承容易乱”的层面,遇到多继承的方法冲突就懵圈——为什么调用同一个方法,执行的是A父类而不是B父类?MRO算法又是什么?为什么说多继承要遵循MRO规则?

其实继承的核心逻辑很简单,单继承是“一对一”的复用,多继承是“多对一”的融合,而MRO算法,就是解决多继承方法冲突的“导航图”。

📌 先破误区:3个新手必踩的继承认知坑

在学继承之前,先纠正3个最常见的误区,避免越学越乱,尤其适合新手快速避坑:

误区1:继承就是“复制父类的代码”——其实不是!继承是“引用复用”,子类不会复制父类的代码,而是通过“关联”直接调用父类的属性和方法,父类修改后,子类会同步生效(除非子类重写)。

误区2:多继承越灵活越好——恰恰相反!多继承虽然能复用多个父类的功能,但容易引发方法名冲突、调用顺序混乱,日常开发中尽量慎用,优先用单继承+组合替代。

误区3:MRO是“随机顺序”,调用哪个父类方法全看运气——错!MRO(Method Resolution Order,方法解析顺序)是Python内置的固定算法,用于确定多继承中子类调用父类方法的顺序,所有调用逻辑都遵循这个算法,不存在随机情况。

记住:继承的核心是“复用+扩展”,单继承简单易维护,多继承需遵循MRO规则,避开不必要的坑。

🔍 核心基础:单继承的用法

单继承是最基础、最常用的继承方式,指子类只继承一个父类(基类),子类可以直接复用父类的非私有属性和方法,同时还能扩展自己的属性和方法,或重写父类的方法。

核心逻辑:子类(派生类) → 继承 → 父类(基类),子类与父类的关系是“is-a”(是一个),比如“狗是一种动物”“学生是一种人”,符合现实逻辑。

单继承的语法非常简单,直接在子类名后加括号,括号内写父类名即可,实战示例如下(结合封装知识点,衔接前文):

# 父类(基类):动物类,定义所有动物的共同属性和方法class Animal:    # 父类的构造方法,绑定公共属性    def __init__(self, species, age):        self.species = species  # 物种        self.age = age          # 年龄    # 父类的公共方法    def eat(self):        print(f"{self.species}在进食...")    def show_base_info(self):        print(f"物种:{self.species},年龄:{self.age}岁")# 子类(派生类):狗类,继承自动物类class Dog(Animal):    # 子类重写构造方法,扩展自己的属性    def __init__(self, species, age, name):        # 调用父类的构造方法,复用父类的属性绑定逻辑        super().__init__(species, age)        self.name = name  # 子类新增的属性:名字    # 子类重写父类的eat方法,实现个性化功能    def eat(self):        print(f"{self.name}{self.species})在吃骨头,吃得很香!")    # 子类新增自己的方法    def fetch(self):        print(f"{self.name}正在捡球,太可爱啦!")# 创建子类对象,调用属性和方法dog = Dog("犬科"3"旺财")# 调用子类重写的方法(覆盖父类)dog.eat()  # 输出:旺财(犬科)在吃骨头,吃得很香!# 调用继承自父类的方法dog.show_base_info()  # 输出:物种:犬科,年龄:3岁# 调用子类新增的方法dog.fetch()  # 输出:旺财正在捡球,太可爱啦!# 访问继承的父类属性和子类新增属性print(f"名字:{dog.name},物种:{dog.species}")  # 输出:名字:旺财,物种:犬科

单继承的3个核心特性(必记):

1.  继承性:子类自动获得父类的非私有属性(如species、age)和方法(如show_base_info),无需重复定义;

2.  重写性:子类可以定义与父类同名的方法(如eat),覆盖父类的方法,调用时优先执行子类版本;

3.  扩展性:子类可以新增父类没有的属性(如name)和方法(如fetch),实现功能扩展。

补充说明:super()函数是单继承(多继承也可用)的核心,用于在子类中调用父类的方法,避免硬编码父类名,增强代码灵活性,后续多继承会详细讲解其用法。

🔧 进阶难点:多继承的用法与冲突解决

Python支持多继承(其他语言如Java不支持),指子类可以同时继承多个父类,从而复用多个父类的功能。但多继承最大的问题的是“方法名冲突”——当多个父类有同名方法时,子类调用该方法,会优先执行哪个父类的方法?

先看多继承的基础语法:子类名后加括号,括号内用逗号分隔多个父类,语法格式:class 子类名(父类1, 父类2, 父类3, ...):

先看一个方法冲突的示例,直观感受问题:

# 父类1:父亲类class Father:    def hobby(self):        print("喜欢看报纸、下棋")    def say(self):        print("我是父亲")# 父类2:母亲类class Mother:    def hobby(self):        print("喜欢做饭、养花")    def say(self):        print("我是母亲")# 子类:孩子类,继承父亲和母亲class Child(FatherMother):    pass  # 不定义任何方法,完全继承父类# 创建子类对象,调用同名方法child = Child()child.hobby()  # 输出:喜欢看报纸、下棋child.say()    # 输出:我是父亲

疑问:为什么调用hobby()和say(),执行的都是Father父类的方法,而不是Mother父类的?这就是MRO算法在起作用——Python通过MRO算法,确定了子类调用父类方法的顺序,优先执行排在前面的父类方法。

多继承的核心原则:当多个父类有同名方法/属性时,子类调用的顺序,由MRO算法决定,这也是多继承的重点和难点。

📚 核心重点:MRO算法的本质与用法(面试高频)

MRO(Method Resolution Order),即方法解析顺序,是Python内置的一种算法,用于解决多继承中的方法/属性调用顺序问题,Python 3中统一使用“C3线性化算法”(Python 2中有旧算法,已淘汰,无需关注)。

先记住MRO的3个核心原则(通俗好记):

1.  子类优先于父类:调用方法时,先找子类自己的方法,没有再找父类;

2.  父类按继承顺序优先:多继承中,父类的排列顺序(如Father在前,Mother在后),决定了优先级,先找排在前面的父类;

3.  祖先类最后:如果多个父类有共同的祖先类(如都继承自object),祖先类的方法最后被调用,避免重复调用。

如何查看一个类的MRO顺序?有两种常用方式,简单直接,实战必备:

# 延续上面的Father、Mother、Child类# 方式1:使用 类名.__mro__ (返回元组,包含完整的调用顺序)print(Child.__mro__)# 输出:(<class '__main__.Child'>, <class '__main__.Father'>, <class '__main__.Mother'>, <class 'object'>)# 方式2:使用 类名.mro() (返回列表,与__mro__内容一致,更易读)print(Child.mro())# 输出:[<class '__main__.Child'>, <class '__main__.Father'>, <class '__main__.Mother'>, <class 'object'>]

解读MRO结果:调用Child类的方法时,顺序是「Child → Father → Mother → object」,这也解释了为什么前面的示例中,child.hobby()执行的是Father的方法——因为Father在MRO顺序中,排在Mother前面。

再看一个复杂一点的多继承MRO示例,巩固理解(含共同祖先类):

# 共同祖先类:object(Python所有类的顶层父类,默认继承)class A:    def func(self):        print("A的func方法")class B(A):    def func(self):        print("B的func方法")class C(A):    def func(self):        print("C的func方法")# 多继承:D继承B和C,B和C都继承Aclass D(BC):    pass# 查看D的MRO顺序print(D.mro())# 输出:[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]# 调用func方法,按MRO顺序执行d = D()d.func()  # 输出:B的func方法(D没有,找B,B有就执行,不找C和A)

补充说明:MRO算法的核心是“线性化”,把多继承的复杂关系,转化为一个线性的顺序,确保每个类只被调用一次,避免重复调用和逻辑混乱,这也是Python多继承能正常运行的关键。

💡 实战用法:super()函数与MRO的配合

前面提到的super()函数,不仅能在单继承中调用父类方法,在多继承中,它会严格遵循MRO顺序,调用“下一个”父类的方法,而不是固定调用某个父类,这是新手最容易混淆的点。

实战示例(结合MRO,看super()的调用逻辑):

class Father:    def say(self):        print("我是父亲")        # 遵循MRO,调用下一个父类的say方法(这里Father的下一个是Mother)        super().say()class Mother:    def say(self):        print("我是母亲")        # 遵循MRO,调用下一个父类的say方法(这里Mother的下一个是object,object没有say方法,结束)        # super().say()class Child(FatherMother):    def say(self):        print("我是孩子")        # 遵循MRO,调用下一个父类的say方法(Child的下一个是Father)        super().say()# 查看Child的MRO:Child → Father → Mother → objectprint(Child.mro())# 调用Child的say方法,观察super()的调用顺序child = Child()child.say()# 输出顺序:# 我是孩子# 我是父亲# 我是母亲

解读:super().say() 没有固定调用某个父类,而是按照MRO顺序,调用当前类的“下一个”类的方法——Child的下一个是Father,Father的下一个是Mother,Mother的下一个是object(无say方法),所以输出顺序如上。

核心要点:super() 的作用,是“按照MRO顺序,调用下一个父类的方法”,而不是“调用直接父类的方法”,这在多继承中尤为重要,能避免硬编码父类名带来的隐患,也能确保遵循MRO规则。

❌ 新手必避的5个继承+MRO常见坑(附解决方案)

继承和MRO是新手的重灾区,以下5个坑一定要避开,每个坑都附具体解决方案,遇到直接对照解决:

  • 坑1:多继承时,随意调整父类顺序,导致方法调用逻辑混乱 → 解决方案:明确父类的优先级,核心功能的父类排在前面,且调用前先查看MRO顺序,确认调用逻辑。

  • 坑2:子类重写父类方法后,想调用父类方法,直接写父类名.方法名(),不使用super() → 解决方案:优先用super()调用,尤其是多继承中,避免跳过MRO顺序,导致逻辑错误。

  • 坑3:误以为MRO顺序是“父类顺序反过来” → 解决方案:记住MRO是“子类优先、父类按继承顺序、祖先类最后”,直接用mro()方法查看,不凭感觉判断。

  • 坑4:多继承中,多个父类有同名的__init__方法,子类不重写,导致属性绑定混乱 → 解决方案:子类重写__init__方法,用super()按MRO顺序调用父类的__init__,确保所有属性正常绑定。

  • 坑5:过度使用多继承,导致类关系复杂,难以维护 → 解决方案:日常开发中,优先使用“单继承+组合”替代多继承,如子类继承一个核心父类,其他功能通过导入其他类的实例实现,降低复杂度。

💡 实战案例:完整演示继承+MRO的所有用法

结合上面的知识点,写一个完整的实战案例,覆盖单继承、多继承、方法重写、super()、MRO查看,跟着敲一遍,就能彻底掌握继承和MRO的核心用法。

# 1. 单继承基础:定义基类(交通工具类)class Vehicle:    def __init__(self, brand, speed):        self.brand = brand  # 品牌        self.speed = speed  # 速度(km/h)    def run(self):        print(f"{self.brand}{self.speed}km/h的速度行驶")# 2. 单继承:汽车类,继承自交通工具类class Car(Vehicle):    def __init__(self, brand, speed, seats):        # 调用父类的__init__,复用属性绑定        super().__init__(brand, speed)        self.seats = seats  # 新增属性:座位数    # 重写父类的run方法    def run(self):        print(f"{self.brand}汽车({self.seats}座)以{self.speed}km/h的速度行驶,很平稳")    # 新增方法    def honk(self):        print(f"{self.brand}汽车鸣笛:嘀嘀嘀~")# 3. 多继承:新能源汽车类,继承汽车类和电力类class ElectricCar(Car):    def __init__(self, brand, speed, seats, battery):        # 调用父类(Car)的__init__,遵循MRO顺序        super().__init__(brand, speed, seats)        self.battery = battery  # 新增属性:电池容量(kWh)    # 重写run方法,结合父类逻辑    def run(self):        super().run()  # 调用Car的run方法        print(f"当前电池容量:{self.battery}kWh,可续航300km")# 4. 查看ElectricCar的MRO顺序print("ElectricCar的MRO顺序:", ElectricCar.mro())# 5. 创建对象,调用方法和属性ec = ElectricCar("特斯拉"120575)ec.run()    # 输出:特斯拉汽车(5座)以120km/h的速度行驶,很平稳;当前电池容量:75kWh,可续航300kmec.honk()   # 输出:特斯拉汽车鸣笛:嘀嘀嘀~# 访问继承的属性和新增属性print(f"品牌:{ec.brand},电池容量:{ec.battery}kWh")  # 输出:品牌:特斯拉,电池容量:75kWh

📝 核心总结

继承和MRO算法,核心是“复用+顺序”,记住以下3个核心要点,就能轻松掌握,应对面试和开发:

1.  单继承:一对一复用,核心是“继承+重写+扩展”,用super()调用父类方法,简单易维护,是日常开发的首选;

2.  多继承:一对多复用,核心是“MRO算法”,调用顺序由MRO决定,用mro()方法可查看,尽量慎用,避免关系复杂;

3.  super():不是固定调用直接父类,而是按照MRO顺序,调用下一个父类的方法,多继承中必须用它保证逻辑正确。

继承是Python面向对象的三大核心(封装、继承、多态)之一,掌握了继承和MRO,你就能构建更清晰、更易复用的类结构,后续学习多态、抽象类等知识点,也会事半功倍。

✨ 小任务:定义一个“手机类”(父类),包含品牌、型号属性和打电话方法;定义“智能手机类”(单继承手机类),新增内存属性和上网方法;定义“折叠屏手机类”(多继承智能手机类和折叠类),新增折叠方法,查看MRO顺序,创建对象并调用所有方法。

读懂代码的骨架,驾驭AI的血肉,做数字时代的超级个体🔥

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 15:21:12 HTTP/2.0 GET : https://f.mffb.com.cn/a/489597.html
  2. 运行时间 : 0.096178s [ 吞吐率:10.40req/s ] 内存消耗:4,664.05kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=59a64463fe113b25d70ec8c41afc4c22
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000605s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000742s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000384s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000301s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000489s ]
  6. SELECT * FROM `set` [ RunTime:0.000209s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000524s ]
  8. SELECT * FROM `article` WHERE `id` = 489597 LIMIT 1 [ RunTime:0.000493s ]
  9. UPDATE `article` SET `lasttime` = 1783063272 WHERE `id` = 489597 [ RunTime:0.020599s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000422s ]
  11. SELECT * FROM `article` WHERE `id` < 489597 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000632s ]
  12. SELECT * FROM `article` WHERE `id` > 489597 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000478s ]
  13. SELECT * FROM `article` WHERE `id` < 489597 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001071s ]
  14. SELECT * FROM `article` WHERE `id` < 489597 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000801s ]
  15. SELECT * FROM `article` WHERE `id` < 489597 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000895s ]
0.097779s