python - 内省(introspection)有什么用?

标签 python introspection

我一直主要使用 PHP 进行编程,我正在尝试切换到 Python。我精通 PHP,而且我从来不需要使用内省(introspection)/内省(introspection)之类的功能。代码自省(introspection)有什么好处,在什么情况下我会发现它不可或缺?

这是我认为有用的唯一方法: 从我在“深入 Python”中看到的示例来看,内省(introspection)基本上意味着您可以列出一个对象的所有函数和属性。对我来说,内省(introspection)似乎只是作为对象的“用户手册”。它使您可以从 python shell 查看对象及其功能。

我只是不明白为什么或在什么情况下你会拿一个任意的对象,反省它,然后做一些有用的事情。

最佳答案

假设给你一个自定义对象,你想知道该对象是否具有某些属性或是否具有某种方法,那么可以使用内省(introspection)函数(如hasattr)来找出答案。

也像 DiveintoPython 书中已经说明的那样,假设你正在构建一个具有自动完成功能的 GUI 编辑器,你想获得在运行时可调用的对象的公共(public)方法,那么你可以使用内省(introspection)方法对于通过 dir 获取的每个方法,如 getattr 并检查它是否 callable 然后将其显示在您的自动完成列表中。

关于python - 内省(introspection)有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5061325/

相关文章:

python - Pandas Dataframe检查id在时间间隔内是否出现大于1

Python 对象检查器?

objective-c - 在 Objective-C 中获取对象属性列表

python - 根据月份和日期创建日期时间列,并根据月份创建年份

python - 如何在函数中循环遍历 pandas 数据框中的列表

python - 如何转义字符串中已经存在的换行符?

python - 遍历包含字典的两个列表,将匹配附加到第三个列表

python - PyGi 的 gnome keyring api 是什么?

c# - 什么是 C# 等同于 Java 的 isInstance()?

ruby 字符串#to_class