gpt4 book ai didi

python - 从字符串动态生成方法?

转载 作者:行者123 更新时间:2023-11-28 21:58:00 26 4
gpt4 key购买 nike

我有一个不同类型的 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 仅在对象中定义一次,相关函数通过操作对象函数列表从中派生。

这样的事情可能吗?

最佳答案

虽然当然可以从类中获取未知属性作为属性,但这不是 pythonic 方法(__getattr__ 魔术方法相当 ruby​​ist)

class spaceObj(object):
storage = None

def __init__(self): # this is for testing only
self.storage = {'total':100,'used':88,'free':1}

def __getattr__(self, item):
if item[:7] == 'getSize': # check if an undefined attribute starts with this
return self.getSize(item[7:])

def getSize(self, what='total'):
return self.storage[what.lower()]

print (spaceObj().getSizeTotal) # 100

关于python - 从字符串动态生成方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com