other answer about this topicで述べたように、Pythonはhelp
の内容をどのように選んだのかを定義していません。 metaclass
__dir__
を使用すると、言語の性質上問題なく動作しますが、サードパーティのモジュールでは、一般的なことではないため、クラスのディレクトリとは異なるカスタム結果が返されることはありません。
あなたがカスタマイズできない機能をカスタマイズしようとしているのは、未知のユーザーメソッドに代わってプロキシする新しいクラスを作成する必要があるため、ヘルプから隠して、あなたの具体的な指示とそれらの指示だけを表示するためにジュピターのノートブックに頼るのではなく、あなたが必要とするものだけを表示するか、またはアプリケーション全体を作成してください。
全体的に、他の動機にメタクラスを使用していても、出力先をhelp
に上書きしようとするだけのメタクラスを使用しているのであれば、間違っていると思います。
別の方法として、クラスに手動で呼び出し可能な "help2"メソッドをスティックし、目的の出力のみを出力することもできます。その後、メインクラスdocstringに文書化してください。 "classname.help2()
を使用してください。"、それ以外の場合は__dir__
のままにしてください。
ヘルプコンテンツ? __dir__は 'dir()'の実装であり、オブジェクトの属性dictを出力する必要があります – Vinny
はい、Jupyterのhelp()は\ __ dir __()を使ってヘルプの内容を決めるようです。これがジュピター特有のものであるのか、それとももっと一般的な理由があるのか分かりません。それにもかかわらず、クラスまたはメタクラスの\ __ dir __()がいつ、そしていつ、なぜ使用されますか? –