一般的に、私はモジュールのプライバシーを尊重するように努めています(変数の前にアンダースコアが付いている場合は、使用しません)。ただし、かなり「安全」と思われるコーナーケースがあります。
これがデモです(私の前の質問)
parser=argparse.ArgumentParser()
parser.add_argument('--point',help='enter a point (e.g. 2,3,4)')
parser.parse_args('--point=-2,5,6'.split()) #works
parser.parse_args('--point -2,5,6'.split()) #doesn't work
これは次の方法で修正できます。
parser=argparse.ArgumentParser()
parser.add_argument('--point',help='enter a point (e.g. 2,3,4)')
parser.parse_args('--point=-2,5,6'.split()) #works
parser._negative_number_matcher = re.compile(r'^-\d+|^-\d*\.\d+')
#Next line works too on Cpython 2.6,
#got the idea from reading Cpython 3.2 source so it should work there too
parser.parse_args('--point -2,5,6'.split())
この場合、クラスの内部でこの量の遊びをするのは問題ないようです。理由は次のとおりです。
* argparseがその変数を変更した場合(ありそうもない)、または別のpython実装が異なる方法で変更した場合、これがクラスの動作を変更して何かを壊す可能性は非常に低いようです。
*他のPython実装では、純粋なPythonで記述されているため(私が知る限り)、cpythonのargparseを使用する可能性があります。
*私のコードは、この「機能」の動作に大きく依存していません。(ユーザーはいつでも「-point = -2,5,6」の受け渡しに戻ることができます)
私の質問はこれです:私は何かが足りないのですか?これは本当に悪い考えですか?私は何かを壊す可能性がありますか?もしそうなら、なぜですか?