2014-03-28 3 views
0

저는 지난 10 년 동안 PHP 개발자 였지만 다른 언어를 배우는 것이 현명한 방법이 될 수 있다고 생각했습니다. 파이썬처럼.
Python in and off 자체는 프로그래밍에 대한 배경 지식이있을 때 이해하기가 어렵지 않습니다.python 응용 프로그램을 구성하는 방법

내 응용 프로그램을 구조화하는 방법과 클래스를 레이아웃하는 방법은 아직 이해할 수없는 내용입니다. PHP에서 컨벤션은 Vendor \ Module \ SubModule \ Class와 같은 일을합니다.이 클래스는 파일 시스템의 디렉토리와 파일에 직접 매핑되며 Class.php는 클래스가 정의 된 파일입니다.

파이썬에서 가장 가까운 것은 Module.Class입니다. 여기서 Module.py는 Class가 정의 된 파일입니다. 따라서이 구조에서는이 모듈에 속한 모든 클래스가 Module.py에 정의되어야합니다.

PHP 작업 방식을 에뮬레이트하고 싶지 않습니다. 필자는 컨텍스트를 제공했습니다.

그래서 질문은 실제로 다음과 같습니다. 응용 프로그램을 구성하는 비범 한 방법은 무엇입니까?


좋아, 아마도 질문이 너무 광범위합니다. 파이썬에 대해 배우려면 PHP 스크립트를 파이썬으로 변환 중입니다. 클러스터 정보가있는 파일을 데이터베이스로 가져 오는 스크립트가 있습니다.

. 
`-- Company 
    |-- Cluster 
    | |-- Cluster.php 
    | |-- Import 
    | | |-- Array.php 
    | | `-- Csv.php 
    | |-- Import.php 
    | |-- Map.php 
    | `-- Sync.php 

그래서이 스크립트에 의해 구현되는 가져 오기 인터페이스 회사 \ 클러스터 \ Import.php 있습니다 : 회사 \ 클러스터 \ 가져 오기 \ Array.php 및 \ Csv.php을
내 PHP 구조는 다음과 같습니다 더 나아가 DAO에 전송할 들어오는 데이터를 처리하고 준비하는 데 도움을주는 클래스가 있습니다.

어떻게이 응용 프로그램을 Python으로 구조화 할 수 있습니까?

+0

모든 프레임 워크를 사용하면 각 프레임 워크마다 고유 한 구조가 있습니다. – fledgling

+1

도움이 될 수도 있습니다. https://coderwall.com/p/lt2kew – sshashank124

+0

감사합니다. @ sshashank124, 해당 페이지를 체크 아웃합니다. –

답변

2

아주 열린 질문이지만, 귀하의 문제는 귀하가 패키지의 개념을 놓치고 있다는 것입니다.

패키지는 모듈 및 기타 패키지가 들어있는 폴더로서 원하는대로 중첩 할 수 있습니다. 파이썬이 폴더를 패키지로 식별하려면, __init__.py 파일을 포함해야합니다 (잠시 그 이름을 가진 빈 파일이면 충분합니다).

파이썬에서 모듈은 .py 파일입니다. 폴더 (일명 패키지)에 해당 이름을 사용하지 말 것을 권장합니다.

이와 같이 임의의 구조를 만들 수 있습니다. 예를 들어, 귀하의 예를 복용 :

main.py 
vendor/ 
    __init__.py 
    mymodule/ 
     __init__.py 
     mysubmodule/ 
      __init__.py 
      any_class.py 

은 그럼 당신은 any_class.pyAnyClass을 정의합니다. 명시 적으로 클래스를 가져올 필요 없다 염두에

from vendor.mymodule.mysubmodule.any_class import AnyClass 

곰 : 그 후 당신은 main.py에서이 방법을 가져올 수 있습니다. 모듈 (== python 파일), 패키지 또는 원하는 것을 가져올 수 있습니다. 다음 예제는 덜 일반적이지만 완벽하게 유효합니다.

import vendor 
my_obj = vendor.mymodule.mysubmodule.any_class.AnyClass() 

from vendor import mymodule 
my_obj = mymodule.mysubmodule.any_class.AnyClass() 

... 

from vendor.mymodule.mysubmodule import any_class 
my_obj = any_class.AnyClass() 

또 다른 사실은 파이썬에서 자바와 같은 파일 당 하나의 클래스를 갖도록 강요받지 않는다는 것입니다.당신은 더 많은 것을 가질 자유 롭고, 밀접히 관련되어 있다면, 같은 모듈에 모든 것을 갖춰야하는 경우가 종종 있습니다.

+0

그래서 필자의 예제를 확장하기 위해 다음과 같은 구조를 만듭니다 : Company \ Cluster \ Import.py 여기서 Array와 Csv 클래스를 정의합니까? 그러면 다음과 같이 사용할 수 있습니다. import Company.Cluster.Import, csv = Import.Csv(). 감사! –

+1

정확하지만 정확하지는 않습니다. 당신은'Company.Cluster 가져 오기 가져 오기'에서해야 할 것입니다 – bgusach

관련 문제