"nib"라는 클래스를 정의하는 목적을 가진 모듈이 있습니다. (및 몇 가지 관련 클래스도 있습니다.) 모듈 자체를 어떻게 호출해야합니까? "부리"? "nibmodule"? 다른 건 없나요?
"nib"라는 클래스를 정의하는 목적을 가진 모듈이 있습니다. (및 몇 가지 관련 클래스도 있습니다.) 모듈 자체를 어떻게 호출해야합니까? "부리"? "nibmodule"? 다른 건 없나요?
답변:
그냥 펜촉. 클래스 이름을 Nib (대문자 N)로 지정합니다. 명명 규칙 및 기타 스타일 조언에 대한 자세한 내용 은 Python 스타일 가이드 인 PEP 8을 참조하십시오 .
Client
있는데, 당연히 내가 호출하고 싶은 인스턴스를 만드는 것이 당연 client
합니다. 그러나 관례에 따르면 모듈 이름은 client
이므로 항상 인스턴스 이름을 client_instance
. 이 문제에 대해 어떻게 생각하십니까?
Client
클래스 이름과 충돌 할 것 Client
입니다. 가능한 이름 지정 변형 ( client
, Client
또는 CLIENT
) 은 3 개뿐이므로 항상 두 인스턴스, 클래스, 모듈 또는 상수간에 충돌이 발생합니다. 클래스보다 인스턴스 또는 상수와 동일하게 모듈 이름을 지정하는 경우가 적기 때문에 다른 가능성의 명명 규칙이 더 좋습니다. 또한 일반적으로 변수보다는 클래스와 상수를 가져 오기 때문에 모듈에서 가져 오기를 더 읽기 쉽게 만듭니다.
나는 그것을 nib.py라고 부를 것입니다. 그리고 클래스 이름을 Nib로 지정합니다.
내가 작업중인 더 큰 파이썬 프로젝트에는 기본적으로 하나의 중요한 클래스를 정의하는 많은 모듈이 있습니다. 클래스 이름은 대문자로 시작합니다. 모듈은 소문자로 된 클래스와 같이 이름이 지정됩니다. 이로 인해 다음과 같은 수입이 발생합니다.
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
Java 방식을 에뮬레이트하는 것과 비슷합니다. 파일 당 하나의 클래스. 하지만 유연성이 더 해져서 말이된다면 항상 단일 파일에 다른 클래스를 추가 할 수 있습니다.
나는 내 솔루션이 파이썬적인 관점에서 그다지 인기가 없다는 것을 알고 있지만, 하나의 모듈-> 하나의 클래스의 Java 접근 방식을 사용하고 모듈이라는 이름을 클래스로 지정하는 것을 선호합니다. 나는 파이썬 스타일의 이유를 이해하지만 많은 클래스를 포함하는 매우 큰 파일을 갖는 것을 너무 좋아하지 않습니다. 접기에도 불구하고 탐색하기가 어렵습니다.
또 다른 이유는 버전 제어입니다. 큰 파일이 있다는 것은 커밋이 해당 파일에 집중하는 경향이 있다는 것을 의미합니다. 이것은 잠재적으로 해결해야 할 갈등의 양을 증가시킬 수 있습니다. 또한 커밋이 특정 파일을 수정하는 추가 로그 정보를 잃어 버립니다 (따라서 특정 클래스가 포함됨). 대신 어떤 수정이 수행되었는지 이해하기 위해 커밋 주석 만있는 모듈 파일에 대한 수정이 표시됩니다.
요약하면 파이썬 철학을 선호한다면 다른 게시물의 제안으로 이동하십시오. 대신 자바와 같은 철학을 선호한다면 Nib 클래스를 포함하는 Nib.py를 만드십시오.
spyder
또는 유사한 편집기를 사용 하여 탐색을 지원하기 위해 클래스 요약을 확인하고 두 창 모두에서 동일한 파일이 열려있는 두 개의 창을 확인합니다. 또한 PEP8을 읽으십시오. Python은 Python을 작성하고 Java는 Java 를 작성 하지만 Python은 Java 작성을위한 것이 아닙니다 .
펜촉은 괜찮습니다. 확실하지 않은 경우 Python 스타일 가이드를 참조하세요.
에서 PEP 8 :
패키지 및 모듈 이름 모듈에는 모두 소문자로 된 짧은 이름이 있어야합니다. 가독성이 향상되면 모듈 이름에 밑줄을 사용할 수 있습니다. Python 패키지에는 밑줄을 사용하지 않는 것이 좋지만 모두 소문자로 된 짧은 이름이 있어야합니다.
모듈 이름은 파일 이름에 매핑되고 일부 파일 시스템은 대소 문자를 구분하지 않고 긴 이름을 자르기 때문에 모듈 이름을 상당히 짧게 선택하는 것이 중요합니다. 이것은 Unix에서는 문제가되지 않지만 문제가 될 수 있습니다. 코드가 이전 Mac 또는 Windows 버전 또는 DOS로 전송 될 때 문제가 발생합니다.
C 또는 C ++로 작성된 확장 모듈에 더 높은 수준 (예 : 더 많은 객체 지향) 인터페이스를 제공하는 Python 모듈이 수반되면 C / C ++ 모듈에는 선행 밑줄 (예 : _socket)이 있습니다.
에서 PEP-8 패키지 및 모듈 이름 :
모듈 에는 모두 소문자로 된 짧은 이름이 있어야합니다. 가독성이 향상되면 모듈 이름에 밑줄을 사용할 수 있습니다.
Python 패키지 에는 밑줄을 사용하지 않는 것이 좋지만 모두 소문자로 된 짧은 이름이 있어야합니다.
C 또는 C ++로 작성된 확장 모듈 에 더 높은 수준 (예 : 더 많은 객체 지향) 인터페이스를 제공하는 Python 모듈이 수반되면 C / C ++ 모듈에는 선행 밑줄 (예 : _socket)이 있습니다.