2016-11-10 9 views
0

文書化されていないAPIのほとんど文書化されていない機能を使用する方法を理解しようとしています。私は簡単にするためにダウンこれに私に迷惑を与えているコードの塊を蒸留している:標準のPython3オブジェクトには、定位置引数を持たないgetメソッドがありますか?

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()メソッドを持つ特別なオブジェクトであるということはありません。

明らかなものがありませんか?位置の引数を取らないget()メソッドを持ついくつかの標準的なPythonオブジェクトがありますか?これは古いバージョンのPythonの構文ですか?または、APIにバグが見つかりましたか?

編集は 受け入れ答えは、私はargsのpythonビルトインでなければならなかったと信じて間違っていたことを示しています。

実際に問題を解決しているので、「このPythonの組み込み関数はargsであると、この関数はエラーをスローしないでしょうか?

+0

あまり問題ではないはず'.get'を実装する複数の型にすることができます。あなたは、関数が正確に何をするべきかをargsを使って伝えることから始めることができます –

+0

位置指定引数を取らない '.get'メソッドを持つ標準のPython型はありますか? – fildred13

+0

これはTkinterベースのアプリケーションですか? StringVar、IntVarなどはゼロ引数の '' get() ''メソッドを持っています。 – jasonharper

答えて

3

Queueですうーん...私はあなたが実際のところ、これらのクラスの多くが持っている

class Email(object): 
    # code... 

    def get(self): 

を提供しているgithubのリンクでこれを見つけた

メソッドを取得します。

Pythonはアヒル型付けあるので、そこに正しいものをオブジェクトを判断する方法は本当にありませんが、あなただけの辞書を構築しているので、Pythonはそうそこに、アヒル型付けされ

+0

そして私はこれを見つけました:class 'CustomArg(object):... return custom_arg'。私はcustom_argがcustom_argの検索で何かを振っていない標準のpython型だと思ってしまったので、このウサギの穴を完全に横切って追跡しました。ありがとう、これは明らかに正しい答えに私を導く。 – fildred13

1

AFAIKはgetmethod that can take zero argumentsの唯一のクラスはQueueです。あなたの例では、おそらくdict

+0

しかし、 'Queue'は組み込みではないので、OPは' queue'モジュールがインポートされているかどうかを調べるためにインポートをチェックする必要があります。 –

+0

'Queue'はPythonの一部ですが、新しい' Queue'を作成しているのであれば、インポートする必要があります。問題の方法は、そのファイルにインポートする必要はありません。 – Jack

+0

それは、完全なプロジェクトで 'queue'や' Queue'のgrepを実行することがほぼ確実に正しい答えになるかどうかということに同意します。ただし、メソッドが単に 'Queue'を' Expects_' Queue'他の場所にインポートする必要があります。 – Jack

関連する問題