问题标签 [introspection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
22 回答
540297 浏览

python - 查找 Python 对象具有哪些方法

给定任何类型的 Python 对象,是否有一种简单的方法可以获取该对象具有的所有方法的列表?

或者,

如果这是不可能的,是否至少有一种简单的方法可以检查它是否具有特定方法,而不是简单地检查调用该方法时是否发生错误?

0 投票
2 回答
4001 浏览

.net - .NET 内省 VS 反射

.NET 中的自省和反射有什么区别

0 投票
29 回答
1117265 浏览

python - 是否有一个内置函数可以打印对象的所有当前属性和值?

所以我在这里寻找的是 PHP 的print_r函数。

这样我就可以通过查看相关对象的状态来调试我的脚本。

0 投票
6 回答
61197 浏览

python - 你能列出函数接收的关键字参数吗?

我有一个字典,我需要将键/值作为关键字参数传递.. 例如..

这很好用,但是如果 d_args dict 中有函数不接受的example值,它显然会死掉。假设示例函数定义为def example(kw2):

这是一个问题,因为我不控制d_argsexample函数的生成。它们都来自外部模块,并且example只接受来自字典的一些关键字参数。

理想情况下我会做

我可能会从有效的关键字参数列表中过滤字典,但我想知道:有没有办法以编程方式列出特定函数采用的关键字参数?

0 投票
5 回答
16507 浏览

python - 在 Python 中检查成员是否存在

我经常想检查一个对象是否有成员。一个例子是在函数中创建单例。为此,您可以hasattr像这样使用:

但你也可以这样做:

一种方法比另一种更好吗?

编辑:添加@classmethod...但请注意,问题在于如何制作单例,而是如何检查对象中成员的存在。

编辑:对于那个例子,一个典型的用法是:

然后s是一个类型的对象,Foo每次都一样。而且,通常,该方法会被多次调用。

0 投票
17 回答
206431 浏览

python - 如何获取方法参数名称?

给定 Python 函数:

如何提取参数的数量和名称。即,鉴于我有一个参考func,我想要func.[something]返回("arg1", "arg2")

使用场景是我有一个装饰器,并且我希望按照它们作为键出现在实际函数中的相同顺序使用方法参数。即,"a,b"当我打电话时,装饰器会如何打印a_method("a", "b")

0 投票
7 回答
91346 浏览

objective-c - 如何将堆栈跟踪打印到控制台/登录 Cocoa?

我想在某些时间点记录调用跟踪,例如失败的断言或未捕获的异常。

0 投票
7 回答
34590 浏览

ruby - 如何在 ruby​​ 中列出当前范围内的当前可用对象?

我是红宝石的新手,我正在玩 IRB。

我发现我可以使用“.methods”方法列出对象的方法,并且 self.methods 有点给了我想要的东西(类似于 Python 的 dir( builtins )?),但是我怎样才能找到一个我通过 include 和 require 加载的库/模块?

我习惯了 python,我使用 dir() 函数来完成同样的事情:

0 投票
3 回答
997 浏览

lisp - Lisp 内省?何时调用函数以及何时退出

使用常见的 lisp,我假设具有自省属性。如何将代码添加到常见的 lisp 代码中,以便告诉我何时调用函数以及何时完成执行。我想采用任何 lisp 代码和对代码的特殊修改。我用 lisp 的 AST 分析计算,这应该是可能的。

0 投票
4 回答
7204 浏览

c++ - 在 C++ 中获取当前方法的名称

是否有一种(标准化)方法可以使用 c++ 获取当前方法的名称?

使用 GNU GCC,您可以使用宏__FUNCTION____PRETTY_FUNCTION__(由 2 个下划线包围)来做到这一点,但是,这当然是不可移植的。有没有办法在标准 C++ 中做到这一点或让它可移植?