【发布时间】:2013-10-09 15:13:44
【问题描述】:
我有一个不同类型的dict,我想根据实际参数的名称为其添加一个简单的getter。
例如,对于三个存储参数,假设:
self.storage = {'total':100,'used':88,'free':1}
我现在正在寻找一种方法(如果可能的话?)通过一些元编程魔法即时生成函数。
代替
class spaceObj(object):
def getSize(what='total'):
return storage[what]
或硬编码
@property
def getSizeTotal():
return storage['total']
但是
class spaceObj(object):
# manipulting the object's index and magic
@property
def getSize:
return ???
因此调用mySpaceObj.getSizeFree 将被派生 - getSize 仅在对象中定义一次,相关函数通过操作对象函数列表从它派生。
这样的事情可能吗?
【问题讨论】:
-
size和total有什么关系? -
我不确定是否理解问题,但您需要
getattr或__getitem__ -
您可以这样做 - 但您希望通过目前的方法获得什么?