2017-06-12 25 views
0

私は同僚のコードを見直しだし、彼は私も前に行うことを考えたことがない何かをやっています:メソッド宣言の保護されたパラメータ?

@staticmethod 
def a_class_method(_parameter='Default') -> tuple: 

は、それがPythonでプライベートとしてメソッド/関数パラメータを宣言するコーシャですか?私にとって、アンダースコアとは、何かを作ることがその反対を意味する間に、(結果に気づいていなければ)これに触れないことを意味します - ここで変数を自由に入力してください。

+0

私はむしろあなたの同僚に尋ねたいと思いますが、現在使用されていない引数をマークするために使用されることがあります。 'pylint'はそれらについて不平を言うことはありません。 – bereal

+0

また、 '' Default''が実コード内のいくつかのグローバル変数である場合、それは最適化のトリックになる可能性があります。グローバルにアクセスするのはPythonのローカルよりも遅いからです。 – bereal

答えて

1

私はそれを一度も見たことがなく、私はそれが理にかなっているとは思わない。メソッド自体をアンダースコアでマークすることができます。しかし、パラメータは、は、関数の呼び出し側に知られることを意味するです。私の見解では、シグネチャに、同じ名前のメンバ変数にパラメータが割り当てられ、カプセル化を強制するよりもブレークするというヒントを与えます。

0

私はそれが大きな問題ではないと思っていますが、あなたはそのコードの下で彼らが何を意味しているかお尋ねしたいと思います。しかし、どのような見知らぬ人にとっても、そのコードは明らかに見えないので、IMHOに書き直す必要があります。

関連する問題