9
だが、私はこのクラスを定義しましょう:setattrとgetattrが空白を許可するのはなぜですか?
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
を上げるので、私は、.
演算子を使用して、これらの属性にアクセスすることはできません。getattr
で
>>> 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(a, 'white space')
1
>>> getattr(a, 'new\nline')
None
この機能の背後にある理由はありますか?もしそうなら、それは何ですか?
これを使用するか、PEP8で定義されている基準に準拠する必要がありますか?
また、直接属性として有効でないダッシュやその他の文字も使用できます。 –
確かに。属性名は、dictをキーする文字列です。 –