当前位置:首页>python>Python魔术方法——`__len__` 与 `__getitem__`:让对象像序列一样工作

Python魔术方法——`__len__` 与 `__getitem__`:让对象像序列一样工作

  • 2026-06-28 23:21:48
Python魔术方法——`__len__` 与 `__getitem__`:让对象像序列一样工作

一、什么是 __len__ 和 __getitem__

__len__ 和 __getitem__ 是 Python 中用于实现**容器类型(Container)**的两个核心魔术方法。通过实现它们,你可以让自定义类的对象表现得像内置的列表、元组、字符串一样,支持 len() 函数、索引访问、切片操作,甚至可以被 for 循环遍历。

方法
作用
调用场景
__len__(self)
返回容器的长度(元素个数)
len(obj)
__getitem__(self, key)
根据索引或切片返回对应的元素
obj[index]
obj[start:end]for item in obj
classMyList:
def__init__(self, items):
self._items = list(items)

def__len__(self):
returnlen(self._items)

def__getitem__(self, index):
returnself._items[index]

ml = MyList([10203040])
print(len(ml))        # 4
print(ml[1])          # 20
print(ml[1:3])        # [20, 30]
for item in ml:
print(item)       # 10 20 30 40

二、__len__ 详解

__len__ 方法应该返回一个非负整数,表示容器中元素的数量。它被内置函数 len() 调用。

2.1 基本用法

classBookCollection:
def__init__(self):
self._books = []

defadd(self, book):
self._books.append(book)

def__len__(self):
returnlen(self._books)

collection = BookCollection()
collection.add("Python入门")
collection.add("数据结构")
print(len(collection))   # 2

2.2 注意事项

  • • __len__ 必须返回一个整数(通常是 int 类型)。
  • • 返回值应该大于等于 0(负数没有意义)。
  • • 如果容器中的元素数量很大,__len__ 应该高效(例如直接返回内部存储的长度)。

三、__getitem__ 详解

__getitem__ 方法允许对象通过方括号 [] 访问元素。它接收一个参数 key,这个参数可以是:

  • • 整数索引:访问单个元素(如 obj[2])。
  • • 切片对象(slice):访问子序列(如 obj[1:5:2])。
  • • 其他类型:例如字典的键(但字典有自己的实现)。

3.1 支持整数索引

classMyArray:
def__init__(self, data):
self._data = list(data)

def__getitem__(self, index):
returnself._data[index]

arr = MyArray([5101520])
print(arr[0])    # 5
print(arr[2])    # 15
print(arr[-1])   # 20(负数索引也支持)

3.2 支持切片操作

当使用切片时,key 参数会是一个 slice 对象。slice 对象有三个属性:startstopstep

classMyArray:
def__init__(self, data):
self._data = list(data)

def__getitem__(self, key):
ifisinstance(key, slice):
# 处理切片,返回一个新的 MyArray 实例
return MyArray(self._data[key])
else:
# 处理整数索引
returnself._data[key]

arr = MyArray([012345])
print(arr[2:5])       # MyArray 实例,包含 [2, 3, 4]
print(arr[1:5:2])     # [1, 3]

3.3 支持遍历(可迭代)

如果一个类实现了 __getitem__,并且能够处理从 0 开始的连续整数索引,那么它就可以被 for 循环遍历(当索引超出范围时,应该抛出 IndexError)。

classCountdown:
def__init__(self, start):
self.start = start

def__getitem__(self, index):
        value = self.start - index
if value < 0:
raise IndexError("超出范围")
return value

c = Countdown(5)
for num in c:
print(num)   # 5, 4, 3, 2, 1

四、组合使用:实现完整的序列协议

实现 __len__ 和 __getitem__ 后,你的类就拥有了序列类型的大部分能力:

  • • len(obj) —— 获取长度
  • • obj[index] —— 索引访问
  • • obj[start:stransform: translateY(step] —— 切片
  • • for item in obj —— 迭代
  • • item in obj —— 成员检查(需要 __contains__ 或 fallback)
  • • list(obj) —— 转换为列表
classSequenceExample:
def__init__(self, data):
self._data = list(data)

def__len__(self):
returnlen(self._data)

def__getitem__(self, key):
returnself._data[key]

seq = SequenceExample([10203040])
print(10in seq)      # True(通过 __getitem__ 逐个比较)
print(50in seq)      # False
print(list(seq))      # [10, 20, 30, 40]

注意in 运算符在没有 __contains__ 时会使用 __getitem__ 逐个检查,时间复杂度 O(n)。如果经常需要成员检查,建议额外实现 __contains__


五、实战案例

5.1 简单的可迭代范围类

classMyRange:
def__init__(self, start, end, step=1):
self.start = start
self.end = end
self.step = step

def__len__(self):
# 计算元素个数
ifself.step > 0:
returnmax(0, (self.end - self.start + self.step - 1) // self.step)
else:
returnmax(0, (self.start - self.end - self.step - 1) // -self.step)

def__getitem__(self, index):
if index < 0:
# 支持负数索引,从后往前数
            index = len(self) + index
if index < 0or index >= len(self):
raise IndexError("索引超出范围")
returnself.start + index * self.step

r = MyRange(2102)
print(len(r))          # 4
print(r[0])            # 2
print(r[3])            # 8
print(r[-1])           # 8
for i in r:
print(i, end=' ')  # 2 4 6 8

5.2 卡片牌组类

classCard:
def__init__(self, rank, suit):
self.rank = rank
self.suit = suit

def__repr__(self):
returnf"{self.rank}{self.suit}"

classDeck:
    ranks = ["A""2""3""4""5""6""7""8""9""10""J""Q""K"]
    suits = ["♠""♥""♣""♦"]

def__init__(self):
self._cards = [Card(rank, suit) for suit inself.suits for rank inself.ranks]

def__len__(self):
returnlen(self._cards)

def__getitem__(self, position):
returnself._cards[position]

deck = Deck()
print(len(deck))           # 52
print(deck[0])             # A♠
print(deck[-1])            # K♦
print(deck[10:15])         # 切片返回列表
for card in deck[:5]:      # 遍历前5张
print(card, end=' ')

5.3 实现二维矩阵类

classMatrix:
def__init__(self, rows, cols, data=None):
self.rows = rows
self.cols = cols
if data:
self._data = list(data)
else:
self._data = [0] * (rows * cols)

def__getitem__(self, key):
ifisinstance(key, tuple):
            row, col = key
returnself._data[row * self.cols + col]
else:
# 返回一行(简化处理)
            row = key
return [self._data[row * self.cols + col] for col inrange(self.cols)]

def__setitem__(self, key, value):
ifisinstance(key, tuple):
            row, col = key
self._data[row * self.cols + col] = value
else:
raise TypeError("需要使用 (row, col) 元组作为索引")

def__len__(self):
returnself.rows * self.cols

m = Matrix(33)
m[00] = 1
m[11] = 2
m[22] = 3
print(m[00])     # 1
print(m[1])        # [0, 2, 0]

六、注意事项

6.1 索引越界

在 __getitem__ 中,当索引超出范围时,应该抛出 IndexError(而不是 ValueError 或其他异常)。

def__getitem__(self, index):
if index < 0or index >= len(self):
raise IndexError("索引超出范围")
returnself._data[index]

6.2 处理负数索引

通常应该支持负数索引(-1 表示最后一个元素)。可以这样做:

def__getitem__(self, index):
if index < 0:
        index = len(self) + index
# 继续处理...

6.3 __getitem__ 的返回值类型

当 key 是整数时,返回单个元素;当 key 是切片时,通常返回一个新的同类型容器(或其子序列)。这取决于你的设计。

6.4 __len__ 的性能

__len__ 应该是一个 O(1) 的操作。如果需要计算长度,最好在内部维护一个长度变量,而不是每次都重新计算。

6.5 缺少 __iter__ 时的 fallback

如果类实现了 __getitem__ 但没有实现 __iter__,Python 会使用一个后备迭代器,从索引 0 开始依次调用 __getitem__,直到抛出 IndexError。这提供了基本的可迭代性,但效率不如显式实现 __iter__


七、总结

  • • __len__:返回容器中元素的数量,被 len() 调用。
  • • __getitem__:支持索引访问和切片操作,被 obj[key] 调用。
  • • 实现这两个方法后,自定义类可以获得类似序列的行为:支持 len()、索引、切片、迭代、成员检查等。
  • • 实现 __getitem__ 时,应正确处理整数索引、负数索引和切片。
  • • 索引越界时抛出 IndexError

通过实现 __len__ 和 __getitem__,你可以让自己的类像内置的列表、字符串一样方便使用,这是 Python 中创建自定义容器类型的核心技巧。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 13:56:22 HTTP/2.0 GET : https://f.mffb.com.cn/a/487839.html
  2. 运行时间 : 0.131744s [ 吞吐率:7.59req/s ] 内存消耗:4,554.36kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=72a43d7f3bf1020f9ae7c8bca4dbfdb9
  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.000635s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001157s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000545s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000520s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001079s ]
  6. SELECT * FROM `set` [ RunTime:0.000462s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001251s ]
  8. SELECT * FROM `article` WHERE `id` = 487839 LIMIT 1 [ RunTime:0.007382s ]
  9. UPDATE `article` SET `lasttime` = 1783144582 WHERE `id` = 487839 [ RunTime:0.002474s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000447s ]
  11. SELECT * FROM `article` WHERE `id` < 487839 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000738s ]
  12. SELECT * FROM `article` WHERE `id` > 487839 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002185s ]
  13. SELECT * FROM `article` WHERE `id` < 487839 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010206s ]
  14. SELECT * FROM `article` WHERE `id` < 487839 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005225s ]
  15. SELECT * FROM `article` WHERE `id` < 487839 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.012767s ]
0.133546s