PEP8に準拠する長いassertステートメントをどのようにフォーマットしますか?私の例の不自然な性質は無視してください。
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), 'some_param_name must be an instance of SomeClassName, silly goose!'
これは組み込み関数ではなくキーワードであるため、assertステートメントの動作が変更されるため、括弧で囲むことはできません。
PEP8は単なるガイドラインであり、 ルールを破る必要がある必要がある場合もある であることを覚えておくことは重要です。
しかし、最も重要なことは、いつ矛盾するかを知ることです。時には、スタイルガイドが適用されない場合があります。
それを念頭に置いて、私はおそらくこれを古いスタイルの行継続で書くでしょう:
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), \
'some_param_name must be an instance of SomeClassName, silly goose!'
それがあなた(またはあなたのリンター)とうまく合わない場合は、いつでもできます:
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), (
'some_param_name must be an instance of SomeClassName, silly goose!')
あるいは:
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), (
'some_param_name must be an instance of SomeClassName, '
'silly goose!')
ERR_MESSAGE_01 = '''
Some really long error message
'''
assert condition(a,b), ERR_MESSAGE_01
私がそれをする方法です...そして私はそれがうまく順応すると思います...
あなたが考えている方法ではなく、括弧で囲むことが可能であることは注目に値します。
assert isinstance(some_param_name,
SomeClassName), ('some_param_name must be an instance of '
'SomeClassName, silly goose!')
ただし、特に読みやすいとは言えません。場合によっては、それが適切なオプションになることがあります。
def afunc(some_param_name):
assert (isinstance(some_param_name, SomeClassName)
), 'some_param_name must be an instance of SomeClassName, silly goose!'
これにより、括弧から暗黙の行継続が得られます。これは、PEP 8で推奨されている動作を壊すことなく推奨されています。
または:
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), (
'some_param_name must be an instance of SomeClassName, silly goose!')