Python:通过属性名称获取静态属性

时间:2011-04-01 13:16:21

标签: python reflection introspection static-members

我有一个python类,通过元类具有“模拟”静态属性:

class MyMeta(type):
   @property
   def x(self): return 'abc'

   @property
   def y(self): return 'xyz'


class My: __metaclass__ = MyMeta

现在我的一些函数将字符串作为字符串接收,应该从My。

中检索
def property_value(name):
   return My.???how to call property specified in name???

这里的要点是我不希望创建My的实例。

非常感谢,

Ovanes

2 个答案:

答案 0 :(得分:3)

您可以使用

getattr(My,name)

答案 1 :(得分:0)

我最近在看这个。我希望能够编写Test.Fu,其中Fu是计算属性。

以下使用描述符对象:

class DeclareStaticProperty(object):
    def __init__(self, method):
        self.method = method
    def __get__(self, instance, owner):
        return self.method(owner())

class Test(object):
    def GetFu(self):
        return 42
    Fu = DeclareStaticProperty(GetFu)

print Test.Fu # outputs 42

请注意,在幕后分配了Test个实例。