2012-02-29 7 views
1

내가 조금이 문제를 해결하기 위해 노력하고 있고, 여기 기본 뭔가 빠진해야한다 (용서, 내가 파이썬 개발에 비교적 새로운 오전) :이 같은 패키지 구조를 가지고파이썬 중첩 된 패키지 문제

:

base 
| 
-->util 
    __init__.py 
    Class1.py 
    Class2.py 
__init__.py 
Main.py 

내 수업은 상당히 양성과 같습니다 Main.py에서

class Class1(object): 

    def __init__(self): 

    # some methods... 


class Class2(object): 

    def __init__(self): 

    # more methods... 

, 내가 가진 :

import utils 

if __name__ == '__main__': 
    c1 = utils.Class1() 
    c2 = utils.Class2() 

PYTHONPATHsrc, src\basesrc\base\utils을 포함하도록 설정됩니다. 그러나, 파이썬은 나 Main.py를 실행하려고이 오류 제공 :

AttributeError: 'module' object has no attribute 'Class1' 

사람이 발생했습니다, 당신은 그것을 해결하는 방법을 알 수 있습니까? 감사!

+0

의 파일 내부 클래스와 같은 파일 이름을가 없다는 것입니다!. 그것은 sth가 클래스인지 패키지인지 모르는 나쁜 habbit입니다. 모듈 (파일)에는 소문자 전용 이름을 사용하십시오. –

답변

5

로 해당 파일을 가져옵니다 . 자바에서 각 파일은 일반적으로 파이썬에서 클래스이며, 각 파일은 모듈입니다. 여기에 설명하는 시나리오를 가정하면 다음을 수행 할 수 있습니다.

import utils.Class1 
import utils.Class2 

if __name__ == '__main__': 
    c1 = utils.Class1.Class1() 
    c2 = utils.Class2.Class2() 

여기서 여러 가지 작업을 수행 할 수 있습니다. 예를 들어

base -> 
    utils -> 
     resources.py 

의 클래스 1과 클래스 2가 모두 포함 된 모듈을 만들 수 있습니다. 그럼 당신은 같은 것을 할 수있는 :

import utils.resources 


c1 = utils.resources.Class1() 

등을하지만 키 클래스 = 파이썬

+0

고마워요! 머리에 손톱이 맞았습니다 :) 나는 이전의 OO 지식을 잘못 활용하고있었습니다 :) – mevatron

0

. util의 util 모듈에 클래스를 가져 왔습니까? 은 추가로 유틸/초기화 평 : 귀하의 main.py에서 다음

from Class1 import Class1 
from Class2 import Class2 

는 "수입 유틸"이것은 자바보다 약간 다릅니다 등 utils.Class1