このクラスを定義するとしましょう:
class A:
pass
a = A()
明らかに、次のように属性を設定できます。
a.x = 5
しかし では、名前に空白を含む属性を指定setattr
できます。a
setattr(a, 'white space', 1)
setattr(a, 'new\nline', None)
dir(a)
とが含まれ'white space'
てい'new\nline'
ます。
.
演算子を使用してこれらの属性にアクセスすることはできませんSyntaxError
。
>>> a.white space
File "<interactive input>", line 1
a.white space
^
SyntaxError: invalid syntax
>>> a.new\nline
File "<interactive input>", line 1
a.new\nline
^
SyntaxError: unexpected character after line continuation character
しかし、私はできるgetattr
:
>>> getattr(a, 'white space')
1
>>> getattr(a, 'new\nline')
None
この機能の背後にある理由はありますか? もしそうなら、それは何ですか?
これを利用する必要がありますか、それとも PEP8 で定義された標準に準拠する必要がありますか?