Questions tagged «introspection»

一些面向对象的编程语言在运行时确定对象类型的能力。

13
在Objective-C中获取对象属性列表
我如何获取列表(以 NSArrayNSDictionary在Objective-C中获得给定对象属性或)? 想象以下情况:我定义了一个仅扩展了的父类,其中NSObject包含an NSString,a BOOL和anNSData对象作为属性。然后,我有几个扩展该父类的类,每个类都添加了许多不同的属性。 我有什么办法可以在父类上实现遍历整个对象并返回例如NSArray每个(子)类属性的实例方法,因为NSStrings它们不在父类上,所以我以后可以使用它们NSString对于KVC?


5
您可以列出函数接收的关键字参数吗?
我有一个字典,我需要将键/值作为关键字参数传递..例如。 d_args = {'kw1': 'value1', 'kw2': 'value2'} example(**d_args) 这可以正常工作,但是如果d_args字典中有一些example函数不接受的值,则它显然会死掉。.说,如果将示例函数定义为def example(kw2): 这是一个问题,因为我无法控制d_args或example函数的生成。它们都来自外部模块,并且example仅接受dict中的某些关键字参数。 理想情况下,我会做 parsed_kwargs = feedparser.parse(the_url) valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2) PyRSS2Gen.RSS2(**valid_kwargs) 我可能只是从有效的关键字参数列表中过滤出dict,但是我想知道:是否有一种方法可以以编程方式列出特定函数所采用的关键字参数?

3
在Python中获取调用函数模块的__name__
假设myapp/foo.py包含: def info(msg): caller_name = ???? print '[%s] %s' % (caller_name, msg) 并myapp/bar.py包含: import foo foo.info('Hello') # => [myapp.bar] Hello 在这种情况下,我想caller_name设置为“ __name__调用函数”模块的属性(即“ myapp.foo”)。如何才能做到这一点?

3
如何在Python中获取类的文件路径?
给定Python中的类C,如何确定该类在哪个文件中定义?我需要可以从类C或从关闭C的实例工作的东西。 之所以这样做,是因为我通常不喜欢将属于同一文件的文件放在同一文件夹中。我想创建一个使用Django模板将其自身呈现为HTML的类。基本实现应根据定义类的文件名来推断模板的文件名。 假设我在文件“ base / artifacts.py”中放置了一个LocationArtifact类,那么我希望默认行为是模板名称为“ base / LocationArtifact.html”。


7
物镜自省/反思
是否有内置的方法,函数,API,普遍接受的方式等来在Objective-C中转储实例化对象的内容,特别是在Apple的Cocoa / Cocoa-Touch环境中? 我希望能够做类似的事情 MyType *the_thing = [[MyType alloc] init]; NSString *the_dump = [the_thing dump]; //pseudo code NSLog("Dumped Contents: %@", the_dump); 并显示对象的实例变量名称和值,以及在运行时可调用的任何方法。理想情况下为易于阅读的格式。 对于熟悉PHP开发人员,我基本上找的反射功能等效(var_dump(),get_class_methods())和面向对象的反射API。

5
动态获取活动名称-Android
我想Activity在的URI中获取要发送的当前名称HttpRequest。有没有一种方法可以不专门参考Activity? 我知道我可以做,myActivity.class.toString()但是这只是对“ myActivity”进行硬编码的一种效率较低的方法,因为我正在静态引用my Activity。是否有使用“ this”之类的东西(btw在这里实际上不起作用,因为它返回的信息多于所需信息)的更通用方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.