草庐IT

introspection

全部标签

javascript - 如果我不知道名称,如何访问 javascript 对象的属性?

假设你有一个像这样的javascript对象:vardata={foo:'bar',baz:'quux'};您可以通过属性名称访问属性:varfoo=data.foo;varbaz=data["baz"];但是,如果您不知道属性的名称,是否有可能获得这些值?这些属性的无序性质是否导致无法区分它们?在我的例子中,我特别考虑了这样一种情况:函数需要接受一系列名称-值对,但属性的名称可能会改变。到目前为止,我对如何做到这一点的想法是将属性的名称与数据一起传递给函数,但这感觉像是一个hack。如果可能的话,我更愿意通过内省(introspection)来做到这一点。

module - 我可以反省 main.main 包的名称吗?

这是一个相当小众的问题,但我目前正在尝试用golang编写一个基于约定的设置存储库。如果我能够以编程方式确定要存储某些内容(例如"github.net/author/projectname/pkg")调用我的库函数的运行包名称,那将是一个很好的API福音。使用Python可以通过inspect实现类似的事情模块,甚至使用__main__.__file__并查看文件系统。 最佳答案 如果您使用以下功能,您可以获得类似的信息:runtime.Callerruntime.FuncForPC代码可能是这样的:pc,file,line,ok:

module - 我可以反省 main.main 包的名称吗?

这是一个相当小众的问题,但我目前正在尝试用golang编写一个基于约定的设置存储库。如果我能够以编程方式确定要存储某些内容(例如"github.net/author/projectname/pkg")调用我的库函数的运行包名称,那将是一个很好的API福音。使用Python可以通过inspect实现类似的事情模块,甚至使用__main__.__file__并查看文件系统。 最佳答案 如果您使用以下功能,您可以获得类似的信息:runtime.Callerruntime.FuncForPC代码可能是这样的:pc,file,line,ok:

c - 线程名称超过 15 个字符?

通过使用prctl或pthread_set_name_np等函数,可以更改线程的名称。至少在Linux2.6.38中,这两个函数施加的限制是名称不能超过15个字符(NULL终止是第16个字节)。这个15个字符的限制是在哪里施加的,有什么(甚至是非正统的)解决方法吗?更新:如评论中所述,这是内核强加的。定义可以在这里找到:http://lxr.linux.no/linux+v2.6.37/include/linux/sched.h#L245 最佳答案 15个字符的限制由内核强制执行:structtask_struct::comm[TA

c - 线程名称超过 15 个字符?

通过使用prctl或pthread_set_name_np等函数,可以更改线程的名称。至少在Linux2.6.38中,这两个函数施加的限制是名称不能超过15个字符(NULL终止是第16个字节)。这个15个字符的限制是在哪里施加的,有什么(甚至是非正统的)解决方法吗?更新:如评论中所述,这是内核强加的。定义可以在这里找到:http://lxr.linux.no/linux+v2.6.37/include/linux/sched.h#L245 最佳答案 15个字符的限制由内核强制执行:structtask_struct::comm[TA

python - 查找在模块中明确定义的函数(python)

好的,我知道您可以使用dir()方法列出模块中的所有内容,但是有没有办法只查看该模块中定义的函数?例如,假设我的模块如下所示:fromdatetimeimportdate,datetimedeftest():return"Thisisarealmethod"即使我使用inspect()来过滤掉内置程序,我仍然会留下任何导入的内容。例如,我会看到:['日期','日期时间','测试']有没有办法排除进口?或者另一种方法来找出模块中定义的内容? 最佳答案 你在寻找这样的东西吗?importsys,inspectdefis_mod_func

python - 查找在模块中明确定义的函数(python)

好的,我知道您可以使用dir()方法列出模块中的所有内容,但是有没有办法只查看该模块中定义的函数?例如,假设我的模块如下所示:fromdatetimeimportdate,datetimedeftest():return"Thisisarealmethod"即使我使用inspect()来过滤掉内置程序,我仍然会留下任何导入的内容。例如,我会看到:['日期','日期时间','测试']有没有办法排除进口?或者另一种方法来找出模块中定义的内容? 最佳答案 你在寻找这样的东西吗?importsys,inspectdefis_mod_func

python - 获取函数内部的 kwargs

如果我有这样的python函数:defsome_func(arg1,arg2,arg3=1,arg4=2):有没有办法确定函数内部通过关键字传递了哪些参数?编辑对于那些问我为什么需要这个的人,我没有真正的理由,这是在一次谈话中提出的,我的好奇心占了上风。 最佳答案 不,没有办法在Python代码中使用此签名执行此操作-如果您需要此信息,则需要更改函数的签名。如果您查看PythonCAPI,您会发现将参数传递给普通Python函数的实际方式始终是元组加字典的方式——即直接反射(reflect)*args,**kwargs。然后将该元组

python - 获取函数内部的 kwargs

如果我有这样的python函数:defsome_func(arg1,arg2,arg3=1,arg4=2):有没有办法确定函数内部通过关键字传递了哪些参数?编辑对于那些问我为什么需要这个的人,我没有真正的理由,这是在一次谈话中提出的,我的好奇心占了上风。 最佳答案 不,没有办法在Python代码中使用此签名执行此操作-如果您需要此信息,则需要更改函数的签名。如果您查看PythonCAPI,您会发现将参数传递给普通Python函数的实际方式始终是元组加字典的方式——即直接反射(reflect)*args,**kwargs。然后将该元组

python - 如何在 Python 2.x 中对对象执行自省(introspection)?

我正在使用Python2.x,我有一个从以太中召唤的物体;关于它的文档不是特别清楚。我希望能够获得该对象的属性列表以及每个属性的类型。同样,我还想获取该对象的方法列表,以及我可以找到的有关该方法的任何其他信息,例如参数数量及其各自的类型。我感觉我只是在Google搜索中遗漏了正确的术语。并不是说我想脱离细节,但它是ActiveDirectory,所以这总是很有趣。 最佳答案 嗯...您的第一站将是一个简单的目录(对象)。这将显示所有对象的成员,包括字段和方法。在交互式Pythonshell中尝试一下,然后试一试。例如:>classF