任何标准的Python3对象都有一个没有位置参数的get方法吗?

时间:2016-11-10 01:54:32

标签: python

我正在试图弄清楚如何使用记录不佳的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会导致此函数不会抛出错误的问题?”

2 个答案:

答案 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}}