当前位置:首页>python>Python面向对象编程:类、对象、继承

Python面向对象编程:类、对象、继承

  • 2026-02-09 13:03:53
Python面向对象编程:类、对象、继承

面向对象编程 是 Python 编程的核心思想,它能将现实世界的事物抽象为代码中的类和对象,让复杂程序变得条理清晰、易于维护。掌握面向对象,你才能真正写出专业级的 Python 代码。

1. 面向对象编程基础

面向对象编程(OOP) 是一种编程范式,它将数据和操作数据的方法组织在一起,形成“对象”。

# 传统过程式编程:数据和函数分离data = [12345]defcalculate_average(numbers):return sum(numbers) / len(numbers)# 面向对象编程:数据和方法封装在一起classDataProcessor:def__init__(self, data):        self.data = datadefcalculate_average(self):return sum(self.data) / len(self.data)# 明显看出OOP的封装优势

2. 类和对象的创建与使用

 是对象的蓝图,对象 是类的实例

# 定义一个简单的学生类classStudent:# __init__是特殊的初始化方法(构造方法)# self代表类的实例本身def__init__(self, name, age, student_id):"""初始化学生对象的属性"""        self.name = name  # 实例属性        self.age = age        self.student_id = student_id        self.grades = []  # 初始化为空列表# 实例方法:操作对象数据的方法defadd_grade(self, grade):"""添加成绩"""        self.grades.append(grade)defget_average(self):"""计算平均分"""ifnot self.grades:return0return sum(self.grades) / len(self.grades)defdisplay_info(self):"""显示学生信息"""        avg = self.get_average()        print(f"学生姓名:{self.name}")        print(f"学号:{self.student_id}")        print(f"年龄:{self.age}")        print(f"平均成绩:{avg:.2f}")# 创建对象(类的实例)student1 = Student("张三"20"2023001")student2 = Student("李四"21"2023002")# 使用对象的方法student1.add_grade(85)student1.add_grade(90)student1.add_grade(78)student1.display_info()

3. 实例属性、类属性和私有属性

classBankAccount:# 类属性:所有对象共享    bank_name = "中国银行"    total_accounts = 0def__init__(self, owner, initial_balance=0):"""初始化银行账户"""# 实例属性:每个对象独有        self.owner = owner        self.__balance = initial_balance  # 私有属性,双下划线开头# 修改类属性        BankAccount.total_accounts += 1        self.account_id = BankAccount.total_accounts# 属性访问器(getter)    @propertydefbalance(self):"""获取余额(只读)"""return self.__balance# 属性修改器(setter)    @balance.setterdefbalance(self, value):"""设置余额,添加验证逻辑"""if value < 0:            print("错误:余额不能为负数")else:            self.__balance = valuedefdeposit(self, amount):"""存款"""if amount > 0:            self.__balance += amount            print(f"存款成功!当前余额:{self.__balance}")else:            print("存款金额必须大于0")defwithdraw(self, amount):"""取款"""if0 < amount <= self.__balance:            self.__balance -= amount            print(f"取款成功!当前余额:{self.__balance}")returnTrueelse:            print("取款失败:余额不足或金额无效")returnFalse    @classmethoddefget_bank_info(cls):"""类方法:操作类属性"""        print(f"银行名称:{cls.bank_name}")        print(f"总账户数:{cls.total_accounts}")    @staticmethoddefcalculate_interest(principal, rate, years):"""静态方法:不依赖类和实例"""return principal * (1 + rate) ** years - principal# 使用示例account1 = BankAccount("张三"1000)account2 = BankAccount("李四"500)print(f"银行名称:{BankAccount.bank_name}")print(f"账户1余额:{account1.balance}")  # 通过property访问account1.deposit(500)account1.withdraw(200)BankAccount.get_bank_info()

4. 继承与多态

继承 允许我们创建新类时重用现有类的功能, 多态 让不同的类对象可以响应相同的方法调用。

# 基类(父类)classAnimal:def__init__(self, name, age):        self.name = name        self.age = agedefmake_sound(self):"""动物叫声(抽象方法,子类必须实现)"""raise NotImplementedError("子类必须实现make_sound方法")defeat(self):"""动物进食"""        print(f"{self.name}正在吃东西")defsleep(self):"""动物睡觉"""        print(f"{self.name}正在睡觉")# 继承Animal类classDog(Animal):def__init__(self, name, age, breed):# 调用父类的初始化方法        super().__init__(name, age)        self.breed = breed  # 子类特有属性# 方法重写(多态)defmake_sound(self):        print(f"{self.name}在汪汪叫!")# 子类特有方法deffetch(self):        print(f"{self.name}正在捡球")classCat(Animal):def__init__(self, name, age, color):        super().__init__(name, age)        self.color = colordefmake_sound(self):        print(f"{self.name}在喵喵叫!")defclimb_tree(self):        print(f"{self.name}正在爬树")classBird(Animal):def__init__(self, name, age, wing_span):        super().__init__(name, age)        self.wing_span = wing_spandefmake_sound(self):        print(f"{self.name}在叽叽喳喳!")deffly(self):        print(f"{self.name}正在飞翔")# 演示:不同对象调用相同方法,表现不同行为defanimal_concert(animals):"""动物音乐会"""    print("=== 动物音乐会开始 ===")for animal in animals:        animal.make_sound()    print("=== 音乐会结束 ===\n")# 创建不同动物的实例animals = [    Dog("旺财"3"金毛"),    Cat("咪咪"2"白色"),    Bird("小翠"10.3)]# 多态animal_concert(animals)# 继承的功能for animal in animals:    animal.eat()  # 继承自父类的方法    animal.sleep()# 检查类型并调用特有方法if isinstance(animal, Dog):        animal.fetch()elif isinstance(animal, Cat):        animal.climb_tree()elif isinstance(animal, Bird):        animal.fly()    print("-" * 30)

5. 多层继承和方法

# 多层继承classPerson:def__init__(self, name, gender):        self.name = name        self.gender = genderdefintroduce(self):        print(f"我是{self.name},性别{self.gender}")classEmployee(Person):def__init__(self, name, gender, employee_id):        super().__init__(name, gender)        self.employee_id = employee_id        self.salary = 0defset_salary(self, salary):        self.salary = salarydefintroduce(self):        super().introduce()        print(f"工号:{self.employee_id}")classManager(Employee):def__init__(self, name, gender, employee_id, department):        super().__init__(name, gender, employee_id)        self.department = department        self.team = []defadd_team_member(self, employee):        self.team.append(employee)defintroduce(self):        super().introduce()        print(f"部门:{self.department}")        print(f"团队人数:{len(self.team)}")# 使用方法解析顺序print("Manager类的MRO:", Manager.__mro__)manager = Manager("王经理""男""M001""技术部")employee1 = Employee("张三""男""E001")employee2 = Employee("李四""女""E002")manager.add_team_member(employee1)manager.add_team_member(employee2)manager.introduce()

6. 综合示例

"""图书管理系统功能:1. 图书的添加、删除、查询2. 读者的注册、借书、还书3. 借阅记录管理"""classBook:"""图书类"""    total_books = 0def__init__(self, title, author, isbn, total_copies=1):        self.title = title        self.author = author        self.isbn = isbn        self.total_copies = total_copies        self.available_copies = total_copies        Book.total_books += 1        self.book_id = Book.total_booksdefborrow(self):"""借书"""if self.available_copies > 0:            self.available_copies -= 1returnTruereturnFalsedefreturn_book(self):"""还书"""if self.available_copies < self.total_copies:            self.available_copies += 1returnTruereturnFalsedefget_status(self):"""获取图书状态"""return {'title': self.title,'author': self.author,'isbn': self.isbn,'total': self.total_copies,'available': self.available_copies        }def__str__(self):"""字符串表示"""        status = "可借"if self.available_copies > 0else"已借完"returnf"《{self.title}》- {self.author} [{status}]"classReader:"""读者类"""def__init__(self, name, reader_id):        self.name = name        self.reader_id = reader_id        self.borrowed_books = []  # 借阅的图书ISBN列表        self.max_books = 5# 最大借阅数量defcan_borrow_more(self):"""检查是否可以继续借书"""return len(self.borrowed_books) < self.max_booksdefborrow_book(self, book_isbn):"""借书"""if self.can_borrow_more():            self.borrowed_books.append(book_isbn)returnTruereturnFalsedefreturn_book(self, book_isbn):"""还书"""if book_isbn in self.borrowed_books:            self.borrowed_books.remove(book_isbn)returnTruereturnFalsedef__str__(self):returnf"读者:{self.name} (ID: {self.reader_id})"classLibrary:"""图书馆类"""def__init__(self, name):        self.name = name        self.books = {}  # ISBN: Book对象        self.readers = {}  # reader_id: Reader对象        self.borrow_records = []  # 借阅记录defadd_book(self, title, author, isbn, copies=1):"""添加图书"""if isbn in self.books:# 如果图书已存在,增加副本            self.books[isbn].total_copies += copies            self.books[isbn].available_copies += copieselse:# 创建新图书            self.books[isbn] = Book(title, author, isbn, copies)        print(f"成功添加图书:{title}")defregister_reader(self, name, reader_id):"""注册读者"""if reader_id in self.readers:            print(f"读者ID {reader_id} 已存在")returnFalse        self.readers[reader_id] = Reader(name, reader_id)        print(f"读者 {name} 注册成功")returnTruedefborrow_book(self, reader_id, isbn):"""借书操作"""# 检查读者是否存在if reader_id notin self.readers:            print("读者不存在")returnFalse# 检查图书是否存在if isbn notin self.books:            print("图书不存在")returnFalse        reader = self.readers[reader_id]        book = self.books[isbn]# 检查是否可以借阅ifnot reader.can_borrow_more():            print(f"{reader.name} 已达到最大借阅数量")returnFalseifnot book.borrow():            print(f"《{book.title}》 已全部借出")returnFalse# 记录借阅if reader.borrow_book(isbn):            self.borrow_records.append({'reader_id': reader_id,'isbn': isbn,'date''2024-01-01',  # 简化处理'action''borrow'            })            print(f"{reader.name} 成功借阅 《{book.title}》")returnTruereturnFalsedefreturn_book(self, reader_id, isbn):"""还书操作"""if reader_id notin self.readers or isbn notin self.books:returnFalse        reader = self.readers[reader_id]        book = self.books[isbn]if reader.return_book(isbn) and book.return_book():            self.borrow_records.append({'reader_id': reader_id,'isbn': isbn,'date''2024-01-02','action''return'            })            print(f"{reader.name} 成功归还 《{book.title}》")returnTrue        print("还书失败")returnFalsedefsearch_book(self, keyword):"""搜索图书"""        results = []        keyword = keyword.lower()for isbn, book in self.books.items():if (keyword in book.title.lower() or                keyword in book.author.lower() or                keyword in isbn.lower()):                results.append(book)return resultsdefshow_status(self):"""显示图书馆状态"""        print(f"\n=== {self.name} 状态报告 ===")        print(f"图书总数:{len(self.books)} 种")        print(f"注册读者:{len(self.readers)} 人")        print(f"借阅记录:{len(self.borrow_records)} 条")# 显示可借图书        available_books = [b for b in self.books.values() if b.available_copies > 0]        print(f"可借图书:{len(available_books)} 种")# 显示借阅最多的图书if self.borrow_records:            borrow_counts = {}for record in self.borrow_records:if record['action'] == 'borrow':                    borrow_counts[record['isbn']] = borrow_counts.get(record['isbn'], 0) + 1if borrow_counts:                most_borrowed_isbn = max(borrow_counts, key=borrow_counts.get)                most_borrowed_book = self.books[most_borrowed_isbn]                print(f"最受欢迎图书:{most_borrowed_book.title} "f"(借阅{borrow_counts[most_borrowed_isbn]}次)")# 运行示例defmain():"""主程序"""# 创建图书馆    library = Library("城市图书馆")# 添加图书    library.add_book("Python编程从入门到实践""Eric Matthes""978-7-115-42802-8"3)    library.add_book("流畅的Python""Luciano Ramalho""978-7-115-45415-7"2)    library.add_book("算法导论""Thomas H. Cormen""978-7-111-40701-0"1)# 注册读者    library.register_reader("张三""R001")    library.register_reader("李四""R002")# 借书操作    print("\n=== 借书操作 ===")    library.borrow_book("R001""978-7-115-42802-8")    library.borrow_book("R001""978-7-115-45415-7")    library.borrow_book("R002""978-7-115-42802-8")# 搜索图书    print("\n=== 搜索图书 ===")    results = library.search_book("python")for book in results:        print(f"找到:{book}")# 显示状态    library.show_status()# 还书操作    print("\n=== 还书操作 ===")    library.return_book("R001""978-7-115-42802-8")# 最终状态    library.show_status()if __name__ == "__main__":    main()

7. 总结

  1. 面向对象的优势 :OOP让代码更模块化、可重用、易维护。当项目复杂度增加时,面向对象的优势会越来越明显。
  2. 关键概念掌握 :
    • 封装 :隐藏内部细节,提供清晰接口
    • 继承 :代码复用,建立类之间的关系
    • 多态 :统一接口,不同实现
  3. Python特有特性 :
    • 使用 @property 装饰器创建属性
    • 双下划线实现私有属性
    • super() 函数调用父类方法
    • __mro__ 查看方法解析顺序
  4. 不要过度设计 :简单的程序不需要复杂的类层次结构
  5. 合理使用继承 :优先使用组合而非继承,除非有明显的"是一个"关系
  6. 注意 self 参数 :实例方法第一个参数必须是 self
  7. 私有属性约定 :Python没有真正的私有属性,双下划线只是名称改写

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 15:33:45 HTTP/2.0 GET : https://f.mffb.com.cn/a/474490.html
  2. 运行时间 : 0.087996s [ 吞吐率:11.36req/s ] 内存消耗:5,396.94kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=fac0e5baea47b9ea0beaa3977a2d5f1b
  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.000670s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000789s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000286s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000294s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000498s ]
  6. SELECT * FROM `set` [ RunTime:0.000213s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000487s ]
  8. SELECT * FROM `article` WHERE `id` = 474490 LIMIT 1 [ RunTime:0.000436s ]
  9. UPDATE `article` SET `lasttime` = 1770622425 WHERE `id` = 474490 [ RunTime:0.008375s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000259s ]
  11. SELECT * FROM `article` WHERE `id` < 474490 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000434s ]
  12. SELECT * FROM `article` WHERE `id` > 474490 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000381s ]
  13. SELECT * FROM `article` WHERE `id` < 474490 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001200s ]
  14. SELECT * FROM `article` WHERE `id` < 474490 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000841s ]
  15. SELECT * FROM `article` WHERE `id` < 474490 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003363s ]
0.089672s