我正在试图弄清楚如何使用记录不佳的API的几乎未记录的功能。为了简单起见,我已经提炼了一大堆给我带来麻烦的代码:
def build_custom_args(args):
custom_args = {}
for key in args:
custom_args.update(key.get())
print(custom_args)
我可以从构造args
的函数中看出它是一个列表。问题是,是什么?列表无论我在列表中放置什么,key.get()都会引发另一个例外。
例如,如果我像这样执行代码:build_custom_args(['foo'])
那么我会得到一条可以理解的错误消息:AttributeError: 'str' object has no attribute 'get'
。
或者,尝试使用字典:build_custom_args([{'foo': 'bar'}])
,但会引发错误:TypeError: get expected at least 1 arguments, got 0
。
我可以告诉args
是一些标准python对象的列表 - 没有迹象表明这些是使用自定义get()
方法的特殊对象。
我错过了一些明显的东西吗?是否有一些标准的python对象有一个get()
方法,它没有位置参数?这是一些旧版Python的语法吗?或者我在API中发现了一个错误?
修改
接受的答案显示我错误地认为args
必须是内置的python。
Jack的回答值得一看,因为它实际上解决了“内置的Python args
会导致此函数不会抛出错误的问题?”
答案 0 :(得分:3)
嗯......我在你提供的github链接中找到了这个
class Email(object):
# code...
def get(self):
事实上,很多这些类都有获取方法。
由于Python是鸭子类型,因此没有办法确定哪个对象是正确的,但你只是在构建一个字典,所以不应该太重要
答案 1 :(得分:1)
AFAIK唯一一个get
method that can take zero arguments的班级是Queue
。
您的示例中可能是Queue
dict
的<{1}}