Python 2.7 또는 3.5에 더미 클래스가 있다고 가정 해보십시오. setattr()
없이 지금공백 문자의 시작 부분에서 공백 문자가 제거되는 이유는 무엇입니까?
>>> setattr(x, ' foo', 'bar')
# ^^^^^^^^^^^^^^^^^^
>>> x.__dict__
{' foo': 'bar'}
# ^^^^^^^^^^^^^^^^^^
의 직접 값을 할당 동일한 기능을 수행 할 수 있습니다 :
>>> class X(object):
... pass
...
>>> x = X()
의 선행 공백 하나 개의 변수를 설정하자하는 setattr()
를 사용하여 : 우리는 인스턴스에 일부 속성을 할당 할
>>> x. hello = 'bye'
# ^^^^^^^^^^^^^^^^
>>> x.__dict__
{' foo': 'bar', 'hello': 'bye'}
# ^^^^^
# leading spaces have been removed!
instance.attribute = value
형식을 사용하면 선행 공백이 제거됩니다!
방법 이름 및 인스턴스 변수
사용 규칙을 명명 기능 : 필요에 따라 밑줄로 구분 된 단어와 소문자를 개선하기 위해 가독성
이 마지막 동작은 원하는 PEP 8 표시로 한 것 같습니다 .
그러나 setattr()
을 사용하면이 규칙을 우회 할 수있었습니다. 또한 을 사용하지 않는 한 선행 공백이있는 속성을 가져올 수 없으므로 공백이있는 변수에 instance.attr = value
구문을 할당 할 수 없게됩니다.
왜 허용됩니까?
두 번째에있는 선행 공백이 없습니다 케이스. 공백은 파서에 의해 무시됩니다 –
왜 허용 되었는가에 따라 파이썬은 "[우리 모두는 여기에 성인을 동의하고 있습니다] (https://mail.python.org/pipermail/tutor/2003-October/025932) adagium을 구독합니다. html) "을 의미하며, Python은 다른 언어보다 훨씬 많은 것을 허용합니다. 개발자는 자신을 보호해야하는 어린이가 아니라는 암묵적인 가정을합니다. – Nietvoordekat