3

私はpythonが初めてです。私はPythonのダックタイピングについていくつかの研究を行ってきましたが、次のような状況で立ち往生しています.

Python 標準ライブラリを見ると、API がパラメーターの名前のみを指定していることがわかります。これは、渡されるものと型に関するヒントを与えるように見えます。これは私が直感に頼るようにします。そのため、間違ったオブジェクトを関数に渡すと、試行錯誤のゲームをプレイしているように聞こえます。

たとえば、python 標準ライブラリ smtplib では、次の関数を使用したいと考えています。

SMTP.starttls([keyfile[, certfile]])

しかし、keyfile または certfile パラメータに渡すオブジェクトのタイプがわかりません。これを解決するにはどうすればよいですか?

4

1 に答える 1

4

これはおそらく、ダックタイピングの問題ではなく、Pythonとドキュメントに精通していないだけです。

特定の例では、ドキュメントに少し従う必要があります。

SMTP.starttls()メソッドでは、それは言う

keyfileとcertfileが提供されている場合、これらはソケットモジュールのssl()関数に渡されます。

そのリンクをたどると、次のように表示されます。

keyfileおよびcertfileパラメーターは、接続のローカル側を識別するために使用される証明書を含むオプションのファイルを指定します。証明書が証明書ファイルに格納される方法の詳細については、証明書の説明を参照してください。

編集:keyfileとパラメータはファイル名(文字列)のcertfileように見えます。次に、証明書へのリンクをたどると、ファイルがPEM形式である必要があることがわかります。

情報を提供してくれたJFSebastianに感謝します。

于 2013-03-17T03:03:28.030 に答える