当前位置:首页>python>Python学习第三课(第1节:类之初体验)

Python学习第三课(第1节:类之初体验)

  • 2026-01-20 03:31:12
Python学习第三课(第1节:类之初体验)

Python 中的类

首先,牢记这句话:在 Python 的世界里,一切皆对象。

咱们的 Python 学习课程,从来不讲长篇大论,全都是通过一段段代码来拆解基本的知识点,最终让你能够写出真正的 Pythonic 代码。

所以,本节课的内容也是一步步让大家去了解 Python 类的基本概念、运行机制以及有哪些魔法方法。

一、什么是类?

说到面向对象编程,大家一定对“类”这个名字不陌生,英文是 class。类其实就是用来表示具有相同属性的对象的一个概念,比如人、猫、狗、兔子等不同的动物种类,我们可以叫做动物类。

可能有的同学在学 C/C++ 、Java 等高级语言的面向对象编程时,被告知对象是类的一个实例,就会惯性地认为 Python 中类和对象是同级别的存在。

事实上并不是这样,还记得文章开头的那句话——“在 Python 的世界里,一切皆对象。”——吗?类也不例外。所以,对象才是 Python 中的最顶级的存在!而经常和“类”相提并论的“对象”则是指类的实例化对象。

这么干说可能不太容易理解,下面我们先喝口水(就没那么干了,哈哈,活跃下气氛!),然后再来看看 Python 中的类是长什么样子。

class Say:    """一个简单的类"""    to_name = 'xxx'    def say(self):        return '520 1314'print(Say.to_name)I = Say()  # 初始化一个实例对象 Iprint(I.to_name, I.say())# 结果:xxx 520 1314

上面的例子中,Say 就是一个类,而 I 就是 Say 类的一个实例化对象(简称实例)。我们应该这样理解:I 这个实例,具有 Say 类的属性 to_name 和 say。所以,大家以后不要再把“类”和“对象”混为一谈了。

在 Say 类中,to_name 是类属性,可以不用初始化直接调用,比如 print(Say.to_name);而 say 方法(类里一般把函数叫做方法)则是实例属性,需要初始化一个实例对象后才可以调用。

如果想修改类或实例属性的值,直接赋值修改即可。

Say.to_name = 'ddd'print(Say.to_name)I.to_name = 'yyy'print(I.to_name, I.say())# 结果:yyy 520 1314

注意:实例的属性可以任意增加,比如已经存在的实例 I,通过 I.name = 'Jim',就相当于给实例对象 I 增加了一个值为 'Jim' 的属性 name,但你再通过 you = Say() 初始化一个实例 you 仍然不会有 name 属性。

有个问题,这个类的功能太单一,只能显示和修改 to_name,say的返回值只有 520 1314。那么,要如何修改才能更加通用呢?

请看下方的修改内容:

class Say:    """一个灵活的类"""    def __init__(self, to_name='xxx', say_words='520 1314'):        self.to_name = to_name        self.say_words = say_words    def say(self):        return self.say_wordsI = Say()  # 对象以默认值初始化一个实例print(I.to_name, I.say())  # 结果:xxx 520 1314I = Say('yyy''555')  # 对象以指定值初始化一个实例print(I.to_name, I.say())  # 结果:yyy 555

修改后的代码可以看出一个最大的改动,就是增加了一个 __init__ 函数。

__init__ 方法是类的构造函数,在类初始化时一定会调用。在第一个例子中虽然没写,但 Python 默认也是有这个方法存在的,只不过是一个空函数。一旦写了,我们就覆盖了默认的空 __init__ 方法,可以在这个函数里做我们想做的事情,比如在类初始化的时候给实例的两个属性赋初值 yyy 和 555。

然后是 to_name 变成了 self.to_name,新增了 self.say_words。如果同样的属性名称同时出现在实例和类中,属性查找会优先选择实例。

这时就有一个重要的问题需要解答:类里面经常看到的self是什么?

很多初学者认为 self 是一个关键字,其实并非如此!它只是一个约定俗成的参数名称,你可以写成任何合法的变量名,比如 cls:

class Say:    """一个灵活的类"""    to_name = 'ooo'  # 类成员变量    def __init__(cls, to_name='xxx', say_words='520 1314'):        cls.to_name = to_name  # 类实例的成员变量初始化        cls.say_words = say_words    def say(cls):        return cls.say_words

而且还需要记住一个关键概念:self 指向的是实例的内存地址,而不是类的。证明代码如下:

class Person:    def __init__(self, name):        self.name = name        # 打印 self 的内存地址,证明它就是实例本身        print(f"Inside __init__, self id: {id(self)}")print(f"Class Person id: {id(Person)}")  # 和 Inside 打印的 id 不同p = Person("xxx")print(f"Outside, p id: {id(p)}")  # 和 Inside 打印的 id 一致

注意:Python 中一切皆对象,不仅 self 和 p 是对象,Person 类本身也是一个对象。我们可以使用 id(obj) 查看任何一个对象的id(内存地址)。

类属性 vs 实例属性:一个经典的“坑”

这是面试和实战中极易翻车的点。

陷阱:当通过实例去修改一个可变对象类型的类属性时,会发生什么?
class MyClass:    shared_list = [123]print(MyClass.shared_list)obj1 = MyClass()obj2 = MyClass()obj1.shared_list.append(4)obj2.shared_list.append(5)print(obj1.shared_list)print(obj2.shared_list)print(MyClass.shared_list)

运行上述代码后,你会发现,最后3个 print 打印出来的结果都是 [1, 2, 3, 4, 5]。因为在类属性中的可变对象在实例化对象后是共享内存的,所以上面的 obj1 和 obj2 修改 shared_list 后,类属性 share_list 的值也随之改变。

金句: “千万不要在类属性中定义可变对象(如列表、字典),除非你非常清楚自己在做什么,否则这就是一颗共享状态的定时炸弹。”

下面是在类中正确使用可变对象的方式:

class MyClass:    def __init__(self):        self._list = [1, 2, 3]obj1 = MyClass()obj2 = MyClass()obj1._list.append(4)obj2._list.append(5)print(obj1._list)  # 结果:[1234]print(obj2._list)  # 结果:[1235]

说到这里,我们又看到了 __init__ 函数,之前说这个函数是类默认就有的方法,像这种双下划线( __ )包含的方法,我们称之为魔法方法。那么,类中还有哪些类似的魔法方法呢?下面,我们就一起来看看吧!


二、类中的魔法方法

字符串的门面

__str__ 与 __repr__
class MyClass:    def __init__(self):        self.name = 'CMOS三好先生'I = MyClass()print(I)

这段代码打印实例对象 I 时会出现 <__main__.MyClass object at 0x...> 这种看上去不可解读的代码。那么,如何打印出可读性更强的内容呢?

解决方案:使用魔法方法 __str__ 和 __repr__。

  • __str__:给用户看(print 调用)。
  • __repr__:给开发者看(交互式命令行中调用)。
class MyClass:    def __init__(self):        self.name = 'CMOS三好先生'    def __str__(self):        return f'[__str__]这是一个 MyClass 类:{self.name}'    def __repr__(self):        return f'[__repr__]这是一个 MyClass 类:{self.name}'
在 Python 命令行中运行的结果如下:

这个只是一个功能展示,一般来说类都是比较复杂的,在 __str__ 方法里可以把需要展示的属性都构造为字符串展示给用户,__repr__ 方法则一般不用实现。

让对象可迭代

__getitem__ 与 __len__

在了解了两个比较基础的魔法方法后,让我们再来学习复杂一点儿的。

下面的代码展示了一个实战例子:编写一个类似 List 的自定义扑克牌类。

import randomclass Poke:    point = [str(n) for n in range(211)] + list('JQKA')    suits = '♠ ♣ ♥ ♦'.split()    def __init__(self):        self._cards = [f'{suit}{point}' \        for suit in self.suits for point in self.point]    def __len__(self):        return len(self._cards)    def __getitem__(self, position):        return self._cards[position]# 只要实现了__getitem__ 与 __len__# 这个类就自动支持切片、迭代、random.choice!poke = Poke()print(poke[0])      # 支持索引print(poke[:3])     # 支持切片for i in range(013):    print(random.choice(poke), end=' ')

让对象成为迭代器

__iter__ 与 __next__

这两个魔法方法能够让类实例对象成为一个迭代器(后面的课程会详细讲解),比如下面的代码就是一个执行反向循环的迭代器。

class Reverse:    """对一个序列执行反向循环的迭代器。"""    def __init__(self, data):        self.data = data        self.index = len(data)    def __len__(self):        return len(self.data)    def __iter__(self):        return self    def __next__(self):        if self.index == 0:            raise StopIteration        self.index = self.index - 1        return self.data[self.index]# 只要实现了 __iter__ 和 __next__# 这个类的实例就自动具有迭代器的特性it = Reverse('!uoy evol I')for _ in range(0len(it)):    print(next(it), end='')
除了上述的那些魔法方法,还有其他的一些方法,比如:__new__、__unicode__、__call__、__setattr__、__getattr__、__getattribute__、__delattr__、__setitem__、__delitem__、__del__、__dir__、__dict__、__exit__、__all__等等,由于这些方法基本用不到,在这里就不多占篇幅一一讲解了。(事实上,我也不知道还有这么多(ಥ◡ಥ))

好了,关于类的初次见面就到这里,我相信同学们对类已经有了一定的认识,下节课我们再深入学习一下类的继承与类装饰器。同学们,下课!

本节课的课后作业

实现一个自定义的字典类。要求有dict_obj[key] 和 dict_obj.get(key) 两种获取值的方法,以及 keys()、values() 和 items() 方法。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 02:34:28 HTTP/2.0 GET : https://f.mffb.com.cn/a/460471.html
  2. 运行时间 : 0.144144s [ 吞吐率:6.94req/s ] 内存消耗:4,519.70kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b33c35062211d584765038e3033808c3
  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.000627s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000795s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000303s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000253s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000463s ]
  6. SELECT * FROM `set` [ RunTime:0.000188s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000530s ]
  8. SELECT * FROM `article` WHERE `id` = 460471 LIMIT 1 [ RunTime:0.001224s ]
  9. UPDATE `article` SET `lasttime` = 1770575669 WHERE `id` = 460471 [ RunTime:0.004357s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000287s ]
  11. SELECT * FROM `article` WHERE `id` < 460471 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003958s ]
  12. SELECT * FROM `article` WHERE `id` > 460471 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014990s ]
  13. SELECT * FROM `article` WHERE `id` < 460471 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013087s ]
  14. SELECT * FROM `article` WHERE `id` < 460471 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.022184s ]
  15. SELECT * FROM `article` WHERE `id` < 460471 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006470s ]
0.147905s