当前位置:首页>python>Python面向对象编程入门:从零开始理解类与对象

Python面向对象编程入门:从零开始理解类与对象

  • 2026-02-28 10:29:08
Python面向对象编程入门:从零开始理解类与对象

1. 引言:为什么咱们需要面向对象编程?

嘿,学习搭子!不知道你有没有遇到过这样的困惑:为什么Python里会有“类”这种东西?函数明明已经够用了,为什么还要搞出“对象”来?别急,我刚开始学的时候也是这么想的。

想象一下,你要开发一个图书管理系统。如果用函数式思维,你可能需要写一堆函数:add_book()borrow_book()return_book(),然后维护一堆全局变量来存储书籍信息。一旦功能变复杂,代码就会像一团乱麻,改一个地方可能牵动全身。

面向对象编程(OOP)就像给你一个“魔法工具箱”,让你可以把相关的数据和操作打包在一起。图书就是“对象”,它有属性(书名、作者、ISBN)和方法(借出、归还)。这样组织代码,不仅逻辑清晰,还能重复利用,就像搭积木一样简单!

学习目标:

  • • 理解类和对象的基本概念
  • • 掌握如何定义类和创建对象
  • • 学会使用属性、方法和构造函数
  • • 能用面向对象思维解决实际问题

预期成果:学完这一章,你不仅能看懂别人写的面向对象代码,还能自己设计一个简单的图书管理系统。更重要的是,你会开始用“对象”的视角看待编程问题,这可是Python进阶的必经之路!

2. 核心内容:类与对象的那些事儿

2.1 类 vs 对象:什么是“蓝图”,什么是“实物”?

咱们先来打个比方。类(Class)就像汽车的设计图纸,它定义了汽车应该有什么(轮子、发动机、颜色)和能做什么(启动、加速、刹车)。而对象(Object)就是根据这张图纸制造出来的具体汽车

在Python中,类是用来创建对象的模板。一个类定义了:

  • • 属性:对象的数据(比如书名、价格)
  • • 方法:对象的行为(比如借书、还书)
# 类定义:图书的“设计图纸”classBook:pass# 对象创建:根据图纸制造具体的书book1 = Book()book2 = Book()

常见错误1:把类和对象混为一谈

# 错误:直接给类赋值属性(这是类的属性,不是对象的)Book.title = "Python入门"# 不推荐这样做# 正确:给对象赋值属性book1 = Book()book1.title = "Python入门"# ✅

解决方案: 记住类名首字母大写(约定),对象名小写。类定义的是“有什么能力”,对象才是“实际干活的”。

2.2 属性与方法:让对象“活”起来

属性就是对象的数据,比如一本书的书名、作者、页数。方法就是对象能执行的操作,比如借出、归还。

classBook:# 方法:对象能做什么defdisplay_info(self):print(f"《{self.title}》 by {self.author}")# 使用book = Book()book.title = "流畅的Python"# 属性赋值book.author = "Luciano Ramalho"book.display_info()  # 调用方法

常见错误2:忘记写self参数

classBook:defdisplay_info():  # 错误!缺少selfprint("显示信息")book = Book()book.display_info()  # 报错:display_info() takes 0 positional arguments but 1 was given

解决方案: 所有实例方法的第一个参数必须是self(名字可以改,但大家都用self)。Python会自动把对象本身作为第一个参数传进去。

2.3 构造函数 init:对象的“出生证明”

每次创建新对象时,__init__方法会自动调用。就像婴儿出生时要登记姓名、性别一样,我们可以在这里给对象设置初始属性。

classBook:def__init__(self, title, author, pages):self.title = title    # 书名属性self.author = author  # 作者属性self.pages = pages    # 页数属性self.is_borrowed = False# 是否借出(默认False)# 创建对象时直接传入属性值book1 = Book("Python编程""Eric Matthes"560)book2 = Book("算法图解""Aditya Bhargava"240)print(book1.title)  # 输出:Python编程print(book2.pages)  # 输出:240

常见错误3:在__init__外初始化属性

classBook:def__init__(self, title):self.title = titledefanother_method(self):self.author = "某作者"# 不推荐:属性分散在不同地方# 正确做法:在__init__中集中初始化所有重要属性classBook:def__init__(self, title, author=None):self.title = titleself.author = author  # 可以设置默认值

解决方案: 尽量在__init__中初始化所有必要的属性。如果某个属性可能为None,可以设置默认值。

2.4 self关键字:对象说“这是我!”

self代表对象自己。在方法内部,通过self.属性名来访问对象的属性,通过self.方法名()来调用对象的其他方法。

classBook:def__init__(self, title, author):self.title = titleself.author = authorself.read_count = 0defread(self):self.read_count += 1# 修改自己的属性print(f"《{self.title}》被阅读了{self.read_count}次")defis_popular(self):# 调用自己的属性做判断returnself.read_count > 100book = Book("Python学习笔记""小明")book.read()  # 输出:《Python学习笔记》被阅读了1次book.read()  # 输出:《Python学习笔记》被阅读了2次print(book.is_popular())  # 输出:False

常见错误4:把self当成关键字

classBook:def__init__(mybook, title):  # 可以!self只是约定名称        mybook.title = titlebook = Book("测试")print(book.title)  # 输出:测试

解决方案: 虽然可以用其他名字,但强烈建议始终使用self。这是Python社区的约定,别人一看就懂。

2.5 实例化过程:对象是如何“诞生”的?

当写下book = Book("标题", "作者")时,Python背后做了这些事:

  1. 1. 分配内存:为新的Book对象分配内存空间
  2. 2. 调用__new__:创建对象实例(通常不用我们管)
  3. 3. 调用__init__:传入参数,初始化对象属性
  4. 4. 返回对象:把创建好的对象赋值给变量
# 这个过程是自动的book = Book("Python入门""张三")# 相当于手动步骤(简化理解)# 1. 创建空对象:book = object.__new__(Book)# 2. 初始化:Book.__init__(book, "Python入门", "张三")# 3. 得到:book.title = "Python入门", book.author = "张三"

常见错误5:混淆实例属性和类属性

classBook:    language = "Python"# 类属性:所有书共享def__init__(self, title):self.title = title  # 实例属性:每本书不同book1 = Book("书1")book2 = Book("书2")print(Book.language)  # 输出:Python(通过类访问)print(book1.language)  # 输出:Python(通过对象访问,但其实是类的)print(book2.language)  # 输出:Python# 修改类属性会影响所有对象Book.language = "Java"print(book1.language)  # 输出:Javaprint(book2.language)  # 输出:Java# 修改对象的language属性会创建实例属性book1.language = "C++"print(book1.language)  # 输出:C++(实例属性)print(book2.language)  # 输出:Java(仍指向类属性)

解决方案: 类属性用于所有对象共享的数据(比如默认值),实例属性用于每个对象特有的数据。初始化实例属性用__init__,定义类属性直接在类内部。

3. 示例代码:图书管理系统实战

现在,咱们用刚学的知识来构建一个简单的图书管理系统。别担心,我会一步步带你实现!

3.1 基础版:图书类

classBook:"""图书类:表示图书馆中的一本书"""def__init__(self, book_id, title, author, year):"""        初始化一本书        参数:            book_id: 图书编号(唯一标识)            title: 书名            author: 作者            year: 出版年份        """self.book_id = book_idself.title = titleself.author = authorself.year = yearself.is_borrowed = False# 是否被借出self.borrower = None# 借阅者(如果被借出)defborrow(self, borrower_name):"""借出这本书"""ifself.is_borrowed:print(f"❌ 《{self.title}》已被{self.borrower}借走")returnFalseelse:self.is_borrowed = Trueself.borrower = borrower_nameprint(f"✅ 《{self.title}》成功借给{borrower_name}")returnTruedefreturn_book(self):"""归还这本书"""ifnotself.is_borrowed:print(f"❌ 《{self.title}》未被借出,无需归还")returnFalseelse:print(f"✅ 《{self.title}》已从{self.borrower}处归还")self.is_borrowed = Falseself.borrower = NonereturnTruedefdisplay_info(self):"""显示图书信息"""        status = "已借出"ifself.is_borrowed else"可借阅"        borrower_info = f",借阅者:{self.borrower}"ifself.is_borrowed else""print(f"编号:{self.book_id} | 《{self.title}》 | 作者:{self.author} | "f"年份:{self.year} | 状态:{status}{borrower_info}")# 测试一下if __name__ == "__main__":# 创建几本书    book1 = Book("B001""Python编程:从入门到实践""Eric Matthes"2016)    book2 = Book("B002""流畅的Python""Luciano Ramalho"2017)    book3 = Book("B003""Python核心编程""Wesley Chun"2016)# 显示信息print("=== 图书信息 ===")    book1.display_info()    book2.display_info()    book3.display_info()# 借书测试print("\n=== 借书测试 ===")    book1.borrow("张三")    book1.borrow("李四")  # 应该失败,因为已被借出    book1.display_info()# 还书测试print("\n=== 还书测试 ===")    book1.return_book()    book1.display_info()

3.2 进阶版:图书馆类(管理多本书)

classLibrary:"""图书馆类:管理多本图书"""def__init__(self, name):self.name = nameself.books = {}  # 用字典存储,key是book_id,value是Book对象self.borrow_records = []  # 借阅记录defadd_book(self, book):"""添加一本书到图书馆"""if book.book_id inself.books:print(f"❌ 编号{book.book_id}的图书已存在")returnFalseself.books[book.book_id] = bookprint(f"✅ 成功添加《{book.title}》")returnTruedefremove_book(self, book_id):"""从图书馆移除一本书"""if book_id notinself.books:print(f"❌ 编号{book_id}的图书不存在")returnFalse        book = self.books[book_id]if book.is_borrowed:print(f"❌ 《{book.title}》已被借出,不能移除")returnFalsedelself.books[book_id]print(f"✅ 成功移除《{book.title}》")returnTruedefborrow_book(self, book_id, borrower_name):"""借阅图书"""if book_id notinself.books:print(f"❌ 编号{book_id}的图书不存在")returnFalse        book = self.books[book_id]        success = book.borrow(borrower_name)if success:# 记录借阅信息            record = {"book_id": book_id,"book_title": book.title,"borrower": borrower_name,"borrow_time""2024-12-11 10:00"# 简化,实际应用用datetime            }self.borrow_records.append(record)return successdefreturn_book(self, book_id):"""归还图书"""if book_id notinself.books:print(f"❌ 编号{book_id}的图书不存在")returnFalsereturnself.books[book_id].return_book()defsearch_by_title(self, keyword):"""按书名关键词搜索"""        results = []for book inself.books.values():if keyword.lower() in book.title.lower():                results.append(book)return resultsdefsearch_by_author(self, author):"""按作者搜索"""        results = []for book inself.books.values():if author.lower() in book.author.lower():                results.append(book)return resultsdefdisplay_all_books(self):"""显示所有图书"""print(f"\n=== {self.name} 图书清单 ===")ifnotself.books:print("图书馆空空如也,快去添加些书吧!")returnfor book_id, book inself.books.items():            book.display_info()defdisplay_borrowed_books(self):"""显示所有已借出的图书"""        borrowed = [book for book inself.books.values() if book.is_borrowed]print(f"\n=== 已借出图书(共{len(borrowed)}本) ===")for book in borrowed:            book.display_info()# 完整系统测试if __name__ == "__main__":# 创建图书馆    my_library = Library("Python学习图书馆")# 添加图书    books_data = [        ("B001""Python编程:从入门到实践""Eric Matthes"2016),        ("B002""流畅的Python""Luciano Ramalho"2017),        ("B003""Python核心编程""Wesley Chun"2016),        ("B004""Python数据分析""Wes McKinney"2017),        ("B005""Python机器学习""Sebastian Raschka"2019)    ]for data in books_data:        book = Book(*data)        my_library.add_book(book)# 显示所有图书    my_library.display_all_books()# 借阅测试print("\n=== 模拟借阅过程 ===")    my_library.borrow_book("B001""张三")    my_library.borrow_book("B002""李四")    my_library.borrow_book("B001""王五")  # 应该失败# 显示借出情况    my_library.display_borrowed_books()# 搜索测试print("\n=== 搜索测试 ===")    python_books = my_library.search_by_title("Python")print(f"找到{len(python_books)}本Python相关书籍:")for book in python_books:        book.display_info()# 归还测试print("\n=== 归还测试 ===")    my_library.return_book("B001")    my_library.display_borrowed_books()

3.3 代码文件

我已经将完整代码保存为单独的文件,方便你运行和修改:

  • • book.py - 图书类的完整实现
  • • library.py - 图书馆管理类的完整实现
  • • main.py - 演示如何使用这个图书管理系统

4. 阶梯式练习:从看懂到会写

4.1 基础巩固:10道选择题

1. 在Python中,类和对象的关系是:A) 类是对象的实例B) 对象是类的实例 ✅C) 类和对象是同一个东西D) 对象是类的父类

2. 下面哪个是类的正确定义?A) class myClass:B) Class MyClass:C) class MyClass: ✅D) def MyClass():

3. __init__ 方法的作用是:A) 销毁对象B) 初始化对象属性 ✅C) 打印对象信息D) 比较两个对象

4. 实例方法的第一个参数通常命名为:A) thisB) self ✅C) meD) obj

5. 创建对象的过程叫做:A) 定义B) 调用C) 实例化 ✅D) 继承

6. 下面代码中,哪个是实例属性?

classStudent:    school = "第一中学"# Adef__init__(self, name):self.name = name  # B ✅self.age = None# C ✅defstudy(self):self.hours = 2# D ✅

A) school(类属性)B) name(实例属性)✅C) age(实例属性)✅D) hours(实例属性,但只在study调用后才有)✅

7. 关于self,正确的是:A) self是Python关键字B) self必须作为第一个参数,且必须叫selfC) self代表类本身D) self代表对象实例本身 ✅

8. 下面代码输出什么?

classDog:def__init__(self, name):self.name = namedefbark(self):print(f"{self.name}在叫!")dog1 = Dog("旺财")dog2 = Dog("来福")dog1.bark()

A) 旺财在叫! ✅B) 来福在叫!C) self在叫!D) 报错

9. 类属性和实例属性的区别是:A) 类属性属于类,所有对象共享;实例属性属于对象,每个对象独立 ✅B) 类属性必须大写,实例属性必须小写C) 类属性在方法外定义,实例属性在方法内定义D) 没有区别

10. 为什么要使用面向对象编程?A) 让代码更复杂B) 组织相关数据和操作,提高代码复用性和可维护性 ✅C) 因为大家都在用D) 为了显得专业

4.2 实战应用:动手改造图书管理系统

练习1:添加图书分类功能

  • • 在Book类中添加category属性(如:"编程"、"文学"、"科学")
  • • 在Library类中添加get_books_by_category(category)方法
  • • 测试:按分类筛选图书

练习2:实现借阅时间记录

  • • 修改borrow方法,记录借出时间(可以使用datetime.now()
  • • 添加计算借阅天数的功能
  • • 添加逾期检查(假设借阅期限为30天)

练习3:扩展为多用户系统

  • • 创建User类,包含属性:user_idnameborrowed_books
  • • 修改Library,支持用户注册和登录
  • • 确保一个用户不能同时借阅超过5本书

练习4:添加数据持久化

  • • 将图书数据保存到JSON文件
  • • 实现save_to_file()load_from_file()方法
  • • 程序启动时自动加载数据,退出时自动保存

练习5:创造你的类

  • • 设计一个“学生选课系统”
  • • 创建Student类、Course类和RegistrationSystem
  • • 实现学生选课、退课、查看已选课程功能

挑战练习:继承与多态

  • • 创建EBook类继承自Book类,增加file_sizeformat属性
  • • 创建AudioBook类继承自Book类,增加durationnarrator属性
  • • 重写display_info方法,让不同类型图书显示不同信息

5. 总结与预告

5.1 重点回顾

咱们今天一起学习了面向对象编程的核心概念,让我用一张表帮你总结一下:

概念
是什么
好比说
关键要点
对象的蓝图
汽车设计图纸
定义属性和方法
对象
类的实例
具体的汽车
根据类创建的具体存在
属性
对象的数据
汽车的颜色、型号
每个对象可以有不同值
方法
对象的行为
汽车的启动、加速
第一个参数是self
init
构造函数
出生登记
对象创建时自动调用
self
对象自身
"我"自己
访问属性和其他方法

记住这些要点,你就能看懂大多数面向对象代码了。最重要的是,你现在有了“对象思维”——知道把相关的数据和操作打包在一起,让代码更有组织性。

5.2 下章预告:面向对象高级特性

嘿,搭子!如果你觉得今天的类与对象已经很有趣,那下周的内容会更精彩!咱们将深入面向对象编程的三大核心特性:

1. 继承: 就像“子承父业”,让新类可以继承已有类的属性和方法。比如EBook继承Book,自动拥有所有图书功能,还能添加自己的特色。

2. 多态: 同一个方法在不同类中有不同实现。比如display_info()方法,在BookEBookAudioBook中显示不同的信息格式。

3. 封装: 把数据和操作细节隐藏起来,只暴露必要的接口。就像汽车你只需要知道油门、刹车,不需要懂发动机原理。

咱们还会学习:

  • • 如何设计优雅的类层次结构
  • • 使用super()调用父类方法
  • • 属性装饰器(@property)的妙用
  • • 抽象类和接口的设计思想

准备好迎接挑战了吗?下周的实战项目是:重构图书管理系统,用继承和多态让系统更灵活、更强大!

给学习搭子的悄悄话

我知道,面向对象的概念一开始可能有点抽象。别慌,我当初学的时候也花了好几天才转过弯来。重要的是多写代码、多思考:

  1. 1. 先模仿再创造:把示例代码运行一遍,然后试着修改属性、添加方法
  2. 2. 从生活中找例子:想想周围哪些事物可以抽象成类(比如手机、学生、课程)
  3. 3. 别怕犯错:把常见的错误都犯一遍,你就知道怎么避免了

如果你在练习中遇到问题,或者有新奇的想法,随时可以回来看看这篇文章。记住,编程不是死记硬背,而是解决问题的思维方式。

加油!🎉

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 12:43:26 HTTP/2.0 GET : https://f.mffb.com.cn/a/477078.html
  2. 运行时间 : 0.304869s [ 吞吐率:3.28req/s ] 内存消耗:4,590.34kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8bbac64edc03e81edec5abab02a8f6fe
  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.000442s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000759s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000290s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000330s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000758s ]
  6. SELECT * FROM `set` [ RunTime:0.000227s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000552s ]
  8. SELECT * FROM `article` WHERE `id` = 477078 LIMIT 1 [ RunTime:0.016456s ]
  9. UPDATE `article` SET `lasttime` = 1772253806 WHERE `id` = 477078 [ RunTime:0.000753s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000914s ]
  11. SELECT * FROM `article` WHERE `id` < 477078 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.034048s ]
  12. SELECT * FROM `article` WHERE `id` > 477078 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.023507s ]
  13. SELECT * FROM `article` WHERE `id` < 477078 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.047406s ]
  14. SELECT * FROM `article` WHERE `id` < 477078 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.060882s ]
  15. SELECT * FROM `article` WHERE `id` < 477078 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.051782s ]
0.306375s