草庐IT

introspection

全部标签

python - 如何自省(introspection) django 模型字段?

当我只知道字段名称和模型名称(均为纯字符串)时,我正在尝试获取模型内字段的类信息。怎么可能?我可以动态加载模型:fromdjango.dbimportmodelsmodel=models.get_model('myapp','mymodel')现在我有字段-'myfield'-我怎样才能获得该字段的类?如果字段是关系型-如何获取相关字段?非常感谢! 最佳答案 您可以使用模型的_meta属性来获取字段对象,并从字段中获取关系等等,例如考虑一个员工表,它有一个部门表的外键In[1]:fromdjango.dbimportmodelsIn

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

我已经看到了以下问题,但它并没有完全让我到达我想要的位置:HowcanIgetalistofallclasseswithincurrentmoduleinPython?特别是,我不想要导入的类,例如如果我有以下模块:frommy.namespaceimportMyBaseClassfromsomewhere.elseimportSomeOtherClassclassNewClass(MyBaseClass):passclassAnotherClass(MyBaseClass):passclassYetAnotherClass(MyBaseClass):pass如果我使用clsmembe

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

我已经看到了以下问题,但它并没有完全让我到达我想要的位置:HowcanIgetalistofallclasseswithincurrentmoduleinPython?特别是,我不想要导入的类,例如如果我有以下模块:frommy.namespaceimportMyBaseClassfromsomewhere.elseimportSomeOtherClassclassNewClass(MyBaseClass):passclassAnotherClass(MyBaseClass):passclassYetAnotherClass(MyBaseClass):pass如果我使用clsmembe

python - 如何列出一个类的所有字段(没有方法)?

假设o是一个Python对象,我想要o的所有字段,没有任何方法或__stuff__。如何做到这一点?我尝试过类似的方法:[fforfindir(o)ifnotcallable(f)][fforfindir(o)ifnotinspect.ismethod(f)]但这些返回与dir(o)相同,可能是因为dir给出了字符串列表。此外,像__class__这样的东西会在这里返回,即使我让它工作。 最佳答案 您可以通过__dict__属性或built-invars获取它函数,这只是一个快捷方式:>>>classA(object):...foo

python - 如何列出一个类的所有字段(没有方法)?

假设o是一个Python对象,我想要o的所有字段,没有任何方法或__stuff__。如何做到这一点?我尝试过类似的方法:[fforfindir(o)ifnotcallable(f)][fforfindir(o)ifnotinspect.ismethod(f)]但这些返回与dir(o)相同,可能是因为dir给出了字符串列表。此外,像__class__这样的东西会在这里返回,即使我让它工作。 最佳答案 您可以通过__dict__属性或built-invars获取它函数,这只是一个快捷方式:>>>classA(object):...foo

python - 如何在 Python 中获取类的文件路径?

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

python - 如何在 Python 中获取类的文件路径?

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

java - 如何确定 Java 中泛型字段的类型?

我一直在尝试确定类中字段的类型。我已经看过所有的内省(introspection)方法,但还没有完全弄清楚如何去做。这将用于从java类生成xml/json。我在这里查看了一些问题,但没有找到我真正需要的。例子:classPerson{publicfinalStringname;publicfinalListchildren;}当我编码这个对象时,我需要知道chidren字段是Person类型的对象列表,这样我才能正确编码它。我试过了for(Fieldfield:Person.class.getDeclaredFields()){System.out.format("Type:%s%n

java - 如何确定 Java 中泛型字段的类型?

我一直在尝试确定类中字段的类型。我已经看过所有的内省(introspection)方法,但还没有完全弄清楚如何去做。这将用于从java类生成xml/json。我在这里查看了一些问题,但没有找到我真正需要的。例子:classPerson{publicfinalStringname;publicfinalListchildren;}当我编码这个对象时,我需要知道chidren字段是Person类型的对象列表,这样我才能正确编码它。我试过了for(Fieldfield:Person.class.getDeclaredFields()){System.out.format("Type:%s%n

Java自省(introspection): object to map

我有一个Java对象obj具有属性obj.attr1,obj.attr2等等。属性可能通过额外的间接级别访问:obj.getAttr1(),obj.getAttr2(),如果不公开。挑战:我想要一个接收对象并返回Map的函数,其中键是字符串"attr1","attr2"等和值是对应的对象obj.attr1,obj.attr2.我想这个函数会被像这样的东西调用toMap(obj),或toMap(obj,"attr1","attr3")(其中attr1和attr3是obj属性的子集),或者也许toMap(obj,"getAttr1","getAttr3")如有必要。我对Java的内省(in