如何使用自省功能让Python告诉我更多有关PIL ImagingCore对象的信息?

kuzzooroo

我在PIL中所做的事情是给我一个我不认识的类的对象。它可能是围绕C数据结构之类的相当薄的包装器。如何让Python告诉我在哪里寻找更多信息?

这是一些使用自省来了解更多信息的失败尝试:

>>> import os, PIL
>>> obj = PIL.Image.open(os.path.expanduser("~/Desktop/foo.png")).getdata()
>>> type(obj)
<type 'ImagingCore'>
>>> ImagingCore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ImagingCore' is not defined
>>> PIL.ImagingCore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'ImagingCore'
>>> obj.__class__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: __class__
>>> obj.__module__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: __module__
>>> import inspect
>>> inspect.getsource(obj)
...
TypeError: <ImagingCore object at 0x105e64b50> is not a module, class, method, function, traceback, frame, or code object
>>> inspect.getsource(type(obj))
...TypeError: <module '__builtin__' (built-in)> is a built-in class
>>>
亚历克斯·马丁里(Alex Martelli)

PIL的核心功能是在模块中实现的_imaging,就像您猜到的那样,它是用C语言编写的,请参见_imaging.c顶层源目录Imaging-1.1.7中的(3281行... :-)。该代码没有对自省进行任何关注,而是100%专注于性能。我相信,除了函数外,它什么都不会暴露(它确实实现了几种类型,包括ImagingCore,但甚至没有将这些类型的名称暴露给Python-只是在内部生成和使用它们)。

因此,Python不会告诉您在哪里寻找更多信息,因为该库又不会告诉Python :-)。由于文档为getdatahttp://effbot.org/imagingbook/image.htm说:

请注意,此方法返回的序列对象是内部PIL数据类型,它仅支持某些序列操作,包括迭代和基本序列访问。要将其转换为普通序列(例如,用于打印),请使用list(im.getdata())

...而“这就是她写的全部”-只是暴露了序列操作的一小部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

需要更多有关magento basic的信息

php-cs-fixer:需要更多有关使用fix --level选项的信息

谁能告诉我有关Android中的InternalStorage的信息?我很困惑

java -version是否告诉我有关JRE或JDK的信息?

/ proc / cpuinfo文件告诉我有关硬件的什么信息?

Git fetch反复告诉我有关同一新分支的信息

谁能告诉我有关Django的延迟加载和事务处理的信息?

如何获取有关“功能”标志警告的更多信息?

返回函数时,reduce函数如何工作?还想了解更多有关组成和构图的信息

该调试信息告诉我有关尝试的SSH连接出了什么问题的信息?

Python-如何获取有关SyntaxError的更多信息?

如何获取有关python错误的更多信息?

如何了解有关Python内部的更多信息?

为什么在扩展[fancy]宏时avr-gcc会告诉我有关缺少参数的信息?

Windows 10告诉我有关RAM磁盘上剩余空间的错误信息

作为一般规则,如何找到有关 PowerShell 对象的更多信息?

使用MVC在html中单击文本时获取有关对象的更多信息

Python:如何获取有关功能的信息?

获取有关特定对象的信息

在哪里可以找到有关为验证Tenserflow对象检测API功能而进行的测试的更多信息

在TCL中,“。list”和“ .desc”语法的用途是什么?在哪里可以了解更多有关它们的信息?

放置一个“?” 在函数名称之后可以了解更多有关函数的信息

libclang返回太多有关函数声明的信息

如何在我的wifi网络中找到有关此设备的更多信息?

我如何才能了解有关Laravel排队作业为何失败的更多信息?

我如何获得有关Facebook登录的更多信息

如何获取有关异常错误的更多信息?

如何获取有关套接字文件的更多信息?

如何获取有关此设备的更多信息?