当我键入对象的名称时,它调用什么方法?
我一直认为它是在调用repr
或str
,但对于PyPDF2的PageObject,这一点并不成立。如您所见,__repr__
或__str__
的输出与在交互控制台中键入变量名称时得到的输出不同。你知道吗
>>> PDF = PdfFileReader(f)
>>> page = PDF.pages[0]
>>> page
'/Encoding': {'/Differences': [32,
'/space',
40,
'/parenleft',
'/parenright',
46,
'/period',
'/slash',
'/zero',
'/one',
'/two',
'/three',
'/four',
'/five',
'/six',
56,
'/eight',
'/nine',
69,
...
>>> page.__str__()
"{'/Annots': [], '/Contents': IndirectObject(12, 0), '/Group': {'/CS': '/DeviceRGB', '/S': '/Transparency', '/Type': '/Group'}, '/MediaBox': RectangleObject([0, 0, 460.8, 345.6]), '/Parent': IndirectObject(2, 0), '/Resources': IndirectObject(8, 0), '/Type': '/Page', '/ArtBox': RectangleObject([0, 0, 460.8, 345.6]), '/BleedBox': RectangleObject([0, 0, 460.8, 345.6]), '/CropBox': RectangleObject([0, 0, 460.8, 345.6]), '/TrimBox': RectangleObject([0, 0, 460.8, 345.6])}"
```
>>> page.__repr__()
<same-as-above>
另外,这个问题可能有答案,只是我没有正确地输入我的查询。你知道吗
更新我在IPython(5.5.0版)中观察到这种行为。使用内置REPL运行输入变量名时得到的输出与repr
输出匹配。你知道吗
在标准Python REPL中使用变量名(如
x
)相当于print(repr(x))
。你可以通过自己实现__repr__
和__str__
来说服自己(而且这不仅仅是print(x)
):但是您使用的是IPython,它的特性是rich outputs;这意味着某些对象在显示时会得到特殊处理。dict就是这样的对象;由于您的
page
是一种特殊的dict
:然后得到特殊的} :
dict
显示;这类似于使用^{相关问题 更多 >
编程相关推荐