我有一个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
答案 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
个实例。