当前位置:首页>python>python面向对象编程(二)——继承与多态

python面向对象编程(二)——继承与多态

  • 2026-08-18 23:10:44
python面向对象编程(二)——继承与多态

本周目标

  • 理解继承(Inheritance) 的概念,学会如何从父类派生子类
  • 掌握方法重写(Override) 和 super() 的用法
  • 理解多态(Polymorphism) 的核心思想——“同一个接口,不同实现”
  • 掌握常用的特殊方法(Magic Methods),如 __str____repr____add__
  • 完成实战项目:动物继承体系 + 动物园管理系统

一、为什么需要继承?

继承的核心价值在于代码复用扩展性

  • 代码复用
    子类可以自动拥有父类的所有属性和方法,无需重复编写
  • 扩展性
    子类可以在父类的基础上增加新的属性和方法,或重写父类的方法来改变行为
  • 多态的基础
    继承是实现多态的前提

在 AI 领域,继承无处不在:

  • PyTorch 中,你定义的每一个神经网络模型都继承自 torch.nn.Module,然后只需重写 forward() 方法
  • 数据处理中,你可以定义 BaseDataset 基类,然后派生出 ImageDatasetTextDataset 等子类
  • 训练流程中,你可以定义 BaseTrainer,然后派生出 CNNTrainerLSTMTrainer 等

二、继承的基本语法

1. 继承的定义

使用 class 子类名(父类名): 来声明继承关系:

# 父类(基类)classAnimal:def__init__(self, name, age):self.name = nameself.age = agedefeat(self):print(f"{self.name} 正在吃东西")defsleep(self):print(f"{self.name} 正在睡觉")# 子类(派生类)classDog(Animal):defbark(self):print(f"{self.name} 汪汪叫!")# 创建子类对象dog = Dog("旺财"3)dog.eat()    # 从父类继承的方法dog.sleep()  # 从父类继承的方法dog.bark()   # 子类自己的方法

💡 术语:父类也叫基类(Base Class) 或超类(Superclass);子类也叫派生类(Derived Class)

2. super() —— 调用父类的方法

当子类需要执行父类的初始化逻辑时,使用 super().__init__(...) 调用父类的构造方法:

classAnimal:def__init__(self, name, age):self.name = nameself.age = agedefspeak(self):return"发出声音"classCat(Animal):def__init__(self, name, age, color):super().__init__(name, age)   # 调用父类的 __init__self.color = color            # 新增子类自己的属性defspeak(self):return"喵喵喵"# 重写父类方法cat = Cat("咪咪"2"橘色")print(cat.name)      # 咪咪(来自父类)print(cat.color)     # 橘色(子类新增)print(cat.speak())   # 喵喵喵(重写后)

⚠️ 重要:即使子类没有显式调用 super().__init__(),Python 也会自动调用父类的无参构造方法(如果存在)。但一旦子类定义了 __init__,就必须手动调用 super().__init__() 来初始化父类的属性,否则父类的属性不会被正确设置。

三、方法重写(Override)—— 子类定制自己的行为

子类可以对父类的方法进行重写(Override),即重新定义方法的实现:

classBird(Animal):def__init__(self, name, age, wing_span):super().__init__(name, age)self.wing_span = wing_span# 重写 speak 方法defspeak(self):return"叽叽喳喳"# 重写 eat 方法,增加额外行为defeat(self):super().eat()  # 先执行父类的 eatprint(f"{self.name} 吃完后啄了啄羽毛")bird = Bird("小翠"120)print(bird.speak())   # 叽叽喳喳bird.eat()# 输出:# 小翠 正在吃东西# 小翠 吃完后啄了啄羽毛

重写时使用 super() 调用父类方法

子类重写方法时,往往希望在父类逻辑的基础上增加功能,而不是完全覆盖。这时可以用 super().方法名() 调用父类版本:

classRobot:defwork(self):print("机器人正在工作")classAIChatRobot(Robot):defwork(self):super().work()            # 调用父类的工作逻辑print("并且能进行智能对话")  # 增加新功能robot = AIChatRobot()robot.work()# 输出:# 机器人正在工作# 并且能进行智能对话

四、多态(Polymorphism)——“一个接口,多种形态”

1. 什么是多态?

多态是指同一个方法名,在不同的类中可以有完全不同的实现。调用者不需要关心对象的实际类型,只需要调用相同的方法名,程序会自动根据对象类型执行对应的版本。

2. 多态的经典示例

classAnimal:defspeak(self):pass# 抽象方法,由子类实现classDog(Animal):defspeak(self):return"汪汪"classCat(Animal):defspeak(self):return"喵喵"classDuck(Animal):defspeak(self):return"嘎嘎"defmake_animal_speak(animal):"""多态函数:不管传入什么动物,都调用 speak 方法"""print(f"{animal.__class__.__name__}{animal.speak()}")# 使用多态animals = [Dog(), Cat(), Duck()]for animal in animals:    make_animal_speak(animal)# 输出:# Dog: 汪汪# Cat: 喵喵# Duck: 嘎嘎

💡 多态的价值:新增一个 Pig 类,只要它实现了 speak() 方法,make_animal_speak 函数无需任何修改,就能直接支持它。这符合开闭原则(对扩展开放,对修改关闭)。

3. 多态在 AI 中的应用场景

在训练模型时,我们可能使用不同的模型架构(CNN、RNN、Transformer),但它们都有相同的接口 train()evaluate()predict()。训练脚本可以接受任何模型对象,调用相同的方法,实现统一的训练流程——这就是多态的力量。

classBaseModel:deftrain(self, data):raise NotImplementedErrordefpredict(self, x):raise NotImplementedErrorclassCNNModel(BaseModel):deftrain(self, data):print("CNN 训练中...")defpredict(self, x):print("CNN 预测中...")classRNNModel(BaseModel):deftrain(self, data):print("RNN 训练中...")defpredict(self, x):print("RNN 预测中...")defrun_experiment(model, data):    model.train(data)    model.predict(data)# 可以传入任意模型run_experiment(CNNModel(), "图片数据")run_experiment(RNNModel(), "序列数据")

五、特殊方法(Magic Methods / Dunder Methods)

Python 类中有许多以双下划线开头和结尾的方法,被称为特殊方法(Magic Methods)。它们定义了类的行为,让对象能够响应 Python 内置操作。

1. __str__ 和 __repr__ —— 对象的字符串表示

  • __str__
    :给用户看的友好字符串(通过 print() 或 str() 触发)
  • __repr__
    :给开发者看的精确字符串(通过 repr() 或直接输入对象触发)
classBook:def__init__(self, title, author, price):self.title = titleself.author = authorself.price = pricedef__str__(self):returnf"《{self.title}》作者:{self.author},价格:¥{self.price}"def__repr__(self):returnf"Book('{self.title}', '{self.author}', {self.price})"book = Book("Python编程""张三"59)print(book)          # 调用 __str__: 《Python编程》作者:张三,价格:¥59print(repr(book))    # 调用 __repr__: Book('Python编程', '张三', 59)

2. __len__ —— 让对象支持 len()

classLibrary:def__init__(self):self.books = []defadd_book(self, book):self.books.append(book)def__len__(self):returnlen(self.books)lib = Library()lib.add_book(Book("A""a"10))lib.add_book(Book("B""b"20))print(len(lib))   # 2

3. 运算符重载(如 __add____eq__ 等)

通过特殊方法,可以让自定义对象支持 +== 等运算符:

classVector:def__init__(self, x, y):self.x = xself.y = ydef__add__(self, other):"""向量加法"""ifnotisinstance(other, Vector):raise TypeError("只能与 Vector 相加")return Vector(self.x + other.x, self.y + other.y)def__eq__(self, other):"""向量相等判断"""returnself.x == other.x andself.y == other.ydef__str__(self):returnf"Vector({self.x}{self.y})"v1 = Vector(12)v2 = Vector(34)v3 = v1 + v2        # 调用 __add__print(v3)           # Vector(4, 6)print(v1 == v2)     # False

💡 常见特殊方法

  • __add__
    +
  • __sub__
    -
  • __mul__
    *
  • __truediv__
    /
  • __eq__
    ==
  • __lt__
    <
  • __getitem__
    索引访问 obj[key]
  • __setitem__
    索引赋值 obj[key] = value
  • __call__
    让对象可以像函数一样调用

六、实战项目:动物继承体系 + 动物园管理系统

我们将构建一个完整的动物继承体系,展示继承、重写和多态,并实现一个简单的动物园管理程序。

类设计

Animal(抽象基类)├── __init__: name, age├── speak(): 抽象方法├── eat(): 通用实现├── __str__: 显示信息Mammal(哺乳动物) extends Animal├── __init__: name, age, fur_color├── give_birth(): 胎生Bird(鸟类) extends Animal├── __init__: name, age, wing_span├── fly(): 飞行Reptile(爬行动物) extends Animal├── __init__: name, age, is_venomous├── crawl(): 爬行Dog(狗) extends Mammal├── speak(): "汪汪"├── wag_tail(): 摇尾巴Cat(猫) extends Mammal├── speak(): "喵喵"├── purr(): 打呼噜Eagle(鹰) extends Bird├── speak(): "嘶鸣"├── hunt(): 捕猎Zoo(动物园) 管理所有动物├── add_animal()├── list_animals()├── make_all_speak()└── find_by_type()

完整代码

# ============================================# 动物继承体系 + 动物园管理系统# 知识点:继承、方法重写、多态、特殊方法# ============================================classAnimal:"""动物基类"""def__init__(self, name, age):self.name = nameself.age = agedefeat(self):print(f"{self.name} 正在进食")defspeak(self):# 抽象方法,子类必须重写raise NotImplementedError("子类必须实现 speak 方法")def__str__(self):returnf"{self.__class__.__name__}({self.name}{self.age}岁)"def__repr__(self):returnself.__str__()classMammal(Animal):"""哺乳动物类"""def__init__(self, name, age, fur_color):super().__init__(name, age)self.fur_color = fur_colordefgive_birth(self):print(f"{self.name} 生了一只小宝宝")classBird(Animal):"""鸟类"""def__init__(self, name, age, wing_span):super().__init__(name, age)self.wing_span = wing_span  # 翼展(厘米)deffly(self):print(f"{self.name} 展翅高飞,翼展 {self.wing_span} cm")classReptile(Animal):"""爬行动物类"""def__init__(self, name, age, is_venomous):super().__init__(name, age)self.is_venomous = is_venomousdefcrawl(self):print(f"{self.name} 正在爬行")# ---------- 具体动物子类 ----------classDog(Mammal):defspeak(self):return"汪汪!"defwag_tail(self):print(f"{self.name} 摇着尾巴,很开心!")classCat(Mammal):defspeak(self):return"喵喵~"defpurr(self):print(f"{self.name} 发出咕噜咕噜的声音")classEagle(Bird):defspeak(self):return"嘶鸣——"defhunt(self):print(f"{self.name} 正在捕猎")classSnake(Reptile):defspeak(self):return"嘶嘶嘶..."defeat(self):# 重写 eat 方法,增加蛇特有的进食行为super().eat()print(f"{self.name} 一口吞下了猎物!")# ---------- 动物园类 ----------classZoo:"""动物园管理类"""def__init__(self, name):self.name = nameself.animals = []  # 存放所有动物对象defadd_animal(self, animal):"""添加动物"""self.animals.append(animal)print(f"✅ {animal.name} 已加入 {self.name}")deflist_animals(self):"""列出所有动物"""ifnotself.animals:print("🏚️ 动物园暂时没有动物")returnprint(f"\n{'='*50}")print(f"        🦁 {self.name} 动物名录")print(f"        总数:{len(self.animals)} 只")print(f"{'='*50}")for i, animal inenumerate(self.animals, 1):            type_name = animal.__class__.__name__print(f"{i}{type_name} | {animal} | 叫声:{animal.speak()}")print(f"{'='*50}")defmake_all_speak(self):"""让所有动物叫一遍(多态演示)"""print(f"\n🔊 {self.name} 大合唱:")for animal inself.animals:print(f"  {animal.name}{animal.speak()}")deffind_by_type(self, class_name):"""根据类型名称查找动物"""        result = []for animal inself.animals:if animal.__class__.__name__ == class_name:                result.append(animal)return resultdef__len__(self):"""返回动物总数"""returnlen(self.animals)def__str__(self):returnf"🏛️ {self.name}{len(self.animals)} 只动物)"# ========== 测试和演示 ==========if __name__ == "__main__":# 创建动物园    zoo = Zoo("幸福动物园")print(f"欢迎来到 {zoo}!")# 创建各种动物    dog = Dog("旺财"3"金色")    cat = Cat("咪咪"2"橘色")    eagle = Eagle("小鹰"5180)    snake = Snake("小青"1True)# 添加到动物园print("\n--- 添加动物 ---")    zoo.add_animal(dog)    zoo.add_animal(cat)    zoo.add_animal(eagle)    zoo.add_animal(snake)# 展示所有动物    zoo.list_animals()# 多态演示:所有动物一起叫    zoo.make_all_speak()# 演示父类和子类方法的调用print("\n--- 行为演示 ---")    dog.wag_tail()    cat.purr()    eagle.hunt()    snake.eat()  # 重写了 eat 方法# 特殊方法演示print(f"\n动物园大小:{len(zoo)} 只动物")print(zoo)   # 调用 __str__# 按类型查找print("\n--- 查找哺乳动物 ---")    mammals = zoo.find_by_type("Mammal")for m in mammals:print(f"  {m.name}")

运行效果示例

欢迎来到 🏛️ 幸福动物园(0 只动物)!--- 添加动物 ---✅ 旺财 已加入 幸福动物园✅ 咪咪 已加入 幸福动物园✅ 小鹰 已加入 幸福动物园✅ 小青 已加入 幸福动物园==================================================        🦁 幸福动物园 动物名录        总数:4 只==================================================1. Dog | Dog(旺财, 3岁) | 叫声:汪汪!2. Cat | Cat(咪咪, 2岁) | 叫声:喵喵~3. Eagle | Eagle(小鹰, 5岁) | 叫声:嘶鸣——4. Snake | Snake(小青, 1岁) | 叫声:嘶嘶嘶...==================================================🔊 幸福动物园 大合唱:  旺财:汪汪!  咪咪:喵喵~  小鹰:嘶鸣——  小青:嘶嘶嘶...--- 行为演示 ---旺财 摇着尾巴,很开心!咪咪 发出咕噜咕噜的声音小鹰 正在捕猎小青 正在进食小青 一口吞下了猎物!动物园大小:4 只动物🏛️ 幸福动物园(4 只动物)--- 查找哺乳动物 ---  旺财  咪咪

本周小结

本周我们深入了面向对象的核心——继承与多态:

知识点
核心要点
继承
子类 class 子类(父类): 自动拥有父类的属性和方法
super()
在子类中调用父类的方法(尤其 __init__
方法重写
子类重新定义父类的方法,改变或增强行为
多态
相同的方法名在不同的类中有不同的实现,调用者无需关心具体类型
鸭子类型
Python 不强制继承,只要对象有相应方法就能使用
特殊方法__str__
__repr____add__ 等,让对象支持内置操作

继承和多态是面向对象编程的“灵魂”。🚀

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 15:40:01 HTTP/2.0 GET : https://f.mffb.com.cn/a/505753.html
  2. 运行时间 : 0.271718s [ 吞吐率:3.68req/s ] 内存消耗:4,906.00kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=558bc0cef5ca6624e64778cd79787985
  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.000454s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000584s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002422s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004059s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000514s ]
  6. SELECT * FROM `set` [ RunTime:0.000204s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000603s ]
  8. SELECT * FROM `article` WHERE `id` = 505753 LIMIT 1 [ RunTime:0.011165s ]
  9. UPDATE `article` SET `lasttime` = 1787298001 WHERE `id` = 505753 [ RunTime:0.010003s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.002706s ]
  11. SELECT * FROM `article` WHERE `id` < 505753 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.027501s ]
  12. SELECT * FROM `article` WHERE `id` > 505753 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.063677s ]
  13. SELECT * FROM `article` WHERE `id` < 505753 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.043448s ]
  14. SELECT * FROM `article` WHERE `id` < 505753 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010405s ]
  15. SELECT * FROM `article` WHERE `id` < 505753 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001190s ]
0.274218s