2016-06-02 1 views
4

PEP8에 따르면 모듈은 소문자 여야합니다. 그러나 인기있는 것들 (예 : Gtk)은 CamelCase 규칙을 따릅니다. 같은 pep8-naming 같은CamelCase를 소문자로 가져 오기 위해 PEP8을 준수합니까?

import CamelcasedModule as camelcased_module 

린터 그러나 이러한 연습 PEP8을 위반한다고 주장하십시오 파이썬 코드베이스를해야하고 다음과 같이 보이는이 정책 위반의 유출을 완화하기 위해

이 처리하는 깨끗한 방법입니다 N813 오류가 발생합니다.

PEP8에서 직접 대문자를 찾지 못했기 때문에 나는 파이썬의 선 (禅)에 충실하기 위해 어떤 방법으로 가야하는지 궁금해하고있었습니다.

는 Sitenote는 : 이전에이 문제를 예로 들어 Gtk 언급 : Gtk으로 오해의 소지가 있었다

from gi.repository import Gtk as gtk 

클래스가 아닌 모듈과 같은 질문에 적용되지 않는. 투명성과 이에 대한 답변이 여전히 유용 할 수 있으므로 여기에서 언급합니다.

+0

입니다. 흔히 Java 또는 C++에서 이식 된 것이므로 원래 명명 규칙을 유지하는 것이 좋습니다. 이 경우 일관성을 이유로 케이스를 변경하지 않습니다. [pep8의이 섹션이 적절하다고 생각합니다] (https://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds) –

+0

@ Thomas Plaskota et all :이 질문을 어떻게 진행해야합니까? Gtk 예제와 관련하여 내 오류에 답변/정리 한 반면,이 질문은 좀 더 일반적인 경우와 관련이 있습니다 (실제로 GTK는 이에 대한 예가 아닙니다). 내가 Thomasz Answer를 허용 된 상태로 두거나 단순히 Gtk를 사용하지 않도록 질문을 다시 작성해야합니까? – Elbenfreund

+0

Camelcased 모듈 이름의 더 좋은 예를 발견하면 질문을 편집하고 편집 한 이유를 설명하는 질문을 추가 할 수 있습니다. Thomasz의 답변에 대한 컨텍스트를 유지하려면 Gtk 예제를 제거 할 필요가 없습니다. –

답변

5

Gtk은 모듈이 아닌 클래스입니다. Class names은 CapWords 규칙을 사용해야합니다.

자세한 내용은 here을 참조하십시오.

+0

예! 모듈 이름은'gi.repository' 였을 것입니다 - 잘 잡으세요! – Dilettant

+1

음, 다소 당황 스럽네요. 이것을 지적 해 주셔서 감사합니다. 적어도 좋은 일이 생겼다고 생각합니다. 명확하고 간결한 대답은 다음과 같습니다. :) – Elbenfreund

3

나는이 참으로 안티 패턴은 내가 개정을 좋아하는 토마스 Plaskota의 두 번째 답 : pep8의

장/절에서는

"공공 및 내부 인터페이스"

수입 이름 항상 구현 세부 사항으로 간주되어야합니다. 다른 모듈은 포함 된 모듈의 API에 명시 적으로 문서화 된 부분 (예 : os.path 또는 하위 모듈에서 기능을 노출하는 모듈 init 모듈)을 제외하고 가져온 이름에 대한 간접 액세스에 의존해서는 안됩니다.

그렇지 않으면 표준 라이브러리조차도 꾸준히 CamelCase 및 modules lower_underscore_case 클래스를 정리하는 것이 확실합니다.

는 처음에는 단지 질문을 통해 미끄러 져 더의 재판 저장 : - :

내가 자주 사용합니까 수입에

import Gtk as gtk 

에일리어싱 고전 지역 바로 가기 사용하는 경우 하지만

import very_impressive_hierarchical_name_for_tools as our_tools

또는 datetime 클래스의 유명한 자체 덮어 쓰기 재미있는 케이스의 경우 :

다음에
import datetime as dt 

같은 사용하여 실제 클라이언트 코드의 수 : 일부 모듈은 낙타 표기법을 사용하는 이유 레거시 이유가 종종있다

a_datetime = dt.datetime.now() 
관련 문제