草庐IT

Reflection

全部标签

java - 以多态方式将 Java 枚举值转换为字符串列表

我有一些辅助方法可以将枚举值转换为适合由HTML显示的字符串列表元素。我想知道是否有可能将它们重构为一个单一的多态方法。这是我现有方法之一的示例:/***Getsthelistofavailablecolours.**@returnthelistofavailablecolours*/publicstaticListgetColours(){Listcolours=newArrayList();for(Colourcolour:Colour.values()){colours.add(colour.getDisplayValue());}returncolours;}我对Java泛型还

java - 如何从 List<T> 中获取 Class<T>

我觉得问这个问题很傻,但我不明白为什么下面的Java代码不能编译:voiddoSomething(Listitems){Classclazz=items.get(0).getClass();...}来自Java文档:TheactualresulttypeisClasswhere|X|istheerasureofthestatictypeoftheexpressiononwhichgetClassiscalled.Forexample,nocastisrequiredinthiscodefragment:Numbern=0;Classc=n.getClass();编辑:找到thisnic

python - 如何创建一个能够包装实例、类和静态方法的 Python 类装饰器?

我想创建一个Python类装饰器(*),它能够无缝包装该类可能具有的所有方法类型:实例、类和静态。这是我目前拥有的代码,对破坏代码的部分进行了注释:defwrapItUp(method):defwrapped(*args,**kwargs):print"Thismethodcallwaswrapped!"returnmethod(*args,**kwargs)returnwrappeddundersICareAbout=["__init__","__str__","__repr__"]#,"__new__"]defdoICareAboutThisOne(cls,methodName):

python - 如何访问 Python 父类(super class)的属性,例如通过 __class__.__dict__?

如何获取python类的所有属性名称包括那些从父类(superclass)继承的属性?classA(object):defgetX(self):return"X"x=property(getX)a=A()a.x'X'classB(A):y=10b=B()b.x'X'a.__class__.__dict__.items()[('__module__','__main__'),('getX',),('__dict__',),('x',),('__weakref__',),('__doc__',None)]b.__class__.__dict__.items()[('y',10),('__m

Python 反射和类型转换

在Python中,一般使用str()、int()、float()等函数来进行类型转换。但是,这些要求您在开发时就知道要转换成什么类型​​。我尝试编写的一些Python代码的子问题如下:给定两个变量,foo和bar,找到foo的类型。(在开发时不知道,因为这是通用代码。)然后,尝试将bar转换为foo的任何类型。如果无法做到这一点,则抛出异常。例如,假设您调用执行此操作的函数conv。它的签名看起来像defconv(foo,bar):#Dostuff.它会被称为:result=conv(3.14,"2.718")#resultisnow2.718,asafloat.

python - 非 ASCII Python 标识符和反射率

这个问题在这里已经有了答案:Identifiernormalization:WhyisthemicrosignconvertedintotheGreeklettermu?(2个答案)关闭4年前。我从PEP3131中学到了Python支持非ASCII标识符,尽管它不被认为是最佳实践。但是,我遇到了这种奇怪的行为,我的?标识符(U+1D70F)似乎自动转换为τ(U+03C4)。classBase(object):def__init__(self):self.?=5#definedwithU+1D70Fa=Base()print(a.?)#5#(U+1D70F)print(a.τ)#5asw

python - 如何获取内置 Python 类构造函数的参数列表?

我正在尝试使用inspect模块,但似乎我不能在内置(native?)类上使用它,否则我误解了。我正在使用Python2.7并尝试使用Python3.2。这是有效的:>>>importinspect>>>classC:...def__init__(self,a,b=4):...self.sum=a+b...>>>inspect.getargspec(C.__init__)ArgSpec(args=['self','a','b'],varargs=None,keywords=None,defaults=(4,))这是行不通的:>>>importinspect>>>importast>>>

python - Pylons 中具有自动加载(反射)功能的 SQLAlchemy 声明性语法

我想使用自动加载来使用现有数据库。我知道如何在没有声明语法的情况下做到这一点(model/_init_.py):definit_model(engine):"""Callmebeforeusinganyofthetablesorclassesinthemodel"""t_events=Table('events',Base.metadata,schema='events',autoload=True,autoload_with=engine)orm.mapper(Event,t_events)Session.configure(bind=engine)classEvent(object

python - 通过自省(introspection)打印 ctypes "Structure"的所有字段

测试.c:#include#includestructs{chara;intb;floatc;doubled;};structs*create_struct(){structs*res=malloc(sizeof(structs));res->a=1;res->b=2;res->c=3.0f;res->d=4.0;returnres;}测试.py:fromctypesimport*classS(Structure):_fields_=[('a',c_byte),('b',c_int),('c',c_float),('d',c_double)]lib=CDLL('./test.so')c

python - 如何检查 python 函数是否更改(在实时代码中)?

如果我有一个函数的引用,我可以检查它的代码对象f.__code__,获得一个签名,然后对这个签名执行后续检查以查看代码是否更改。这很好。但是,如果函数的依赖项之一发生变化怎么办?例如deffoo(a,b):returnbar(a,b)假设foo保持不变,但bar发生了变化。有没有一种方法可以通过foo.__code__对象“实时”检查foo的依赖项(相对于解析文本和使用AST)? 最佳答案 我只是在这里查看__code__对象,所以我不能说这肯定有效,但在我看来你可以使用co_namestuple以(递归地)遍历以特定函数为根的调用