标签: introspection

如何获取模块中定义但未导入的所有类?

我已经看到了以下问题,但它并没有让我想到我想要的地方:如何在Python中获取当前模块中所有类的列表?

特别是,我不想要导入的类,例如,如果我有以下模块:

from my.namespace import MyBaseClass
from somewhere.else import SomeOtherClass

class NewClass(MyBaseClass):
    pass

class AnotherClass(MyBaseClass):
    pass

class YetAnotherClass(MyBaseClass):
    pass
Run Code Online (Sandbox Code Playgroud)

如果我使用clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)链接问题中的接受答案建议,它将返回MyBaseClass并且SomeOtherClass除了本模块中定义的3之外.

我怎么才能得到NewClass,AnotherClass而且YetAnotherClass

python introspection python-2.7

42
推荐指数
4
解决办法
2万
查看次数

内省与反思有什么区别?

任何人都可以从语言/环境不可知的角度解释这两个概念之间的区别吗?

还有一组编程语言需要满足的条件才能反思和/或内省吗?

如果有,这些条件是什么?

language-agnostic reflection introspection

42
推荐指数
2
解决办法
1万
查看次数

为什么Ruby使用respond_to?而不是responds_to?

我很好奇为什么Ruby的内省相关方法来检查对象是否响应方法respond_to?而不是responds_to?

这对我来说似乎总是很尴尬,但也许那是因为我习惯于respondsToSelector客观c.

ruby introspection naming-conventions

41
推荐指数
2
解决办法
1万
查看次数

40
推荐指数
3
解决办法
2万
查看次数

获取Objective-C类或实例的所有方法

在Objective-C中,我可以测试给定的类或实例是否响应某些选择器.但是如何查询类或实例的所有方法或类的属性(例如所有方法或属性的列表)?

introspection objective-c objective-c-runtime

38
推荐指数
3
解决办法
2万
查看次数

Java内省:要映射的对象

我有一个Java对象obj具有属性obj.attr1,obj.attr2等属性通过额外的间接水平可能访问:obj.getAttr1(),obj.getAttr2(),如果不公开.

挑战:我想一个函数,一个对象,并返回一个Map<String, Object>,其中的键是字符串"attr1","attr2"等等和值对应的对象obj.attr1,obj.attr2.我想这个函数会被调用

  • toMap(obj),
  • toMap(obj, "attr1", "attr3")(其中attr1attr3obj属性的子集),
  • 或者toMap(obj, "getAttr1", "getAttr3")如果有必要的话.

我对Java的内省了解不多:你是如何用Java做的?

现在,我toMap()对每个我关心的对象类型都有一个专门的实现,而且它太多样板了.


注意:对于那些了解Python的人,我想要类似的东西obj.__dict__.或者dict((attr, obj.__getattribute__(attr)) for attr in attr_list)对于子集变体.

java introspection

38
推荐指数
5
解决办法
5万
查看次数

36
推荐指数
3
解决办法
1万
查看次数

如何反省django模型领域?

我试图获取模型中的字段的类信息,当我只知道字段的名称和模型的名称(两个普通字符串).这怎么可能?

我可以动态加载模型:

from django.db import models
model = models.get_model('myapp','mymodel')
Run Code Online (Sandbox Code Playgroud)

现在我有场 - 'myfield' - 我怎么能得到那个领域的班级?

如果该字段是关系型的 - 如何获取相关字段?

谢谢你!

python introspection django-models

35
推荐指数
2
解决办法
2万
查看次数

如何在没有继承方法的情况下获取类的公共方法?

给定任何对象我可以调用#public_methods并查看它将响应的所有方法.但是,我发现有时候获得一个没有继承的所有公共方法的快速列表是有用的,也就是那些真正属于这个类的东西.

我找到了" 简单的方法列出Ruby对象的公共方法 ",如果我使用:

(Foo.public_methods - Object.public_methods).sort
Run Code Online (Sandbox Code Playgroud)

我可以过滤掉很多基本的Ruby东西.我希望能够过滤掉链条上一直延续的所有内容.如果我知道父类我可以使用它进行过滤,但我想提出一个通用命令,它可以返回任何对象的未公开公共方法的数组.

ruby introspection public-method

35
推荐指数
2
解决办法
1万
查看次数

如何确定Java中通用字段的类型?

我一直在尝试确定类中字段的类型.我已经看到了所有的内省方法,但还没有弄清楚如何做到这一点.这将用于从java类生成xml/json.我在这里看了很多问题,但还没找到我需要的东西.

例:

class Person {
    public final String name;
    public final List<Person> children;
}
Run Code Online (Sandbox Code Playgroud)

当我编组这个对象时,我需要知道该chidren字段是一个类型对象的列表Person,所以我可以正确地编组它.

我试过了

for (Field field : Person.class.getDeclaredFields()) {
    System.out.format("Type: %s%n", field.getType());
}
Run Code Online (Sandbox Code Playgroud)

但是,这只会告诉我,这是一个List,不是ListPerson小号

谢谢

java generics reflection types introspection

34
推荐指数
3
解决办法
5万
查看次数