[python] 동일한 디렉토리 또는 하위 디렉토리 내에서 클래스를 가져 오는 방법은 무엇입니까?

모든 .py 파일 을 저장하는 디렉토리가 있습니다.

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides

나는에서 클래스를 사용하려는 user.pydir.pymain.py .
이 파이썬 클래스를 main.py 로 어떻게 가져올 수 있습니까?
또한 user.py 가 하위 디렉토리에있는 User경우 클래스를 어떻게 가져올 수 있습니까?

bin/
    dir.py
    main.py
    usr/
        user.py



답변

파이썬 2

파일 __init__.py과 같은 디렉토리에 빈 파일을 호출 하십시오. 그것은 파이썬에게 “이 디렉토리에서 가져 오기가 가능”하다는 것을 의미합니다.

그럼 그냥 …

from user import User
from dir import Dir

파일이 서브 디렉토리에있는 경우에도 마찬가지 __init__.py입니다. 서브 디렉토리에도 넣은 다음 점 표기법과 함께 일반 import 문을 사용하십시오. 각 레벨의 디렉토리에 대해 가져 오기 경로에 추가해야합니다.

bin/
    main.py
    classes/
        user.py
        dir.py

따라서 디렉토리의 이름이 “classes”라면 다음과 같이합니다.

from classes.user import User
from classes.dir import Dir

파이썬 3

이전과 동일하지만 .하위 디렉토리를 사용하지 않는 경우 모듈 이름 앞에 접두사를 붙입니다 .

from .user import User
from .dir import Dir


답변

방금 동일한 디렉토리에있는 파일에서 클래스를 가져 오기 위해 Python 3으로 작성한다는 것을 알게되었습니다 ( martineau의 의견 덕분에 ).

from .user import User
from .dir import Dir


답변

당신의 main.py:

from user import Class

여기서 Class가져 오려는 클래스의 이름입니다.

의 메소드를 호출하려는 경우 다음 Class을 사용하여 호출 할 수 있습니다.

Class.method

__init__.py동일한 디렉토리에 빈 파일 이 있어야합니다 .


답변

함수와 클래스를 자신과 혼합하지 않으려면 모듈을 가져오고 해당 이름을 통해 액세스 할 수 있습니다

import util # imports util.py

util.clean()
util.setup(4)

또는 함수와 클래스를 코드로 가져올 수 있습니다

from util import clean, setup
clean()
setup(4)

wildchar *를 사용하여 해당 모듈의 모든 것을 코드로 가져올 수 있습니다

from util import *
clean()
setup(4)


답변

python3에 __init__.py없는 더 이상 필요 . 콘솔의 현재 디렉토리가 파이썬 스크립트가있는 디렉토리이면 모든 것이 잘 작동합니다.

import user

그러나를 포함하지 않는 다른 디렉토리에서 호출하면 작동하지 않습니다 user.py.
이 경우에는

from . import user

클래스가 아닌 전체 파일을 가져 오려는 경우에도 작동합니다.


답변

이해하기 쉽도록 :

1 단계 : 모든 디렉토리가 포함 된 하나의 디렉토리로 이동

$ cd /var/tmp

2 단계 : 이제 일부 코드를 사용하여 클래스 이름이 Class1 인 class1.py 파일을 만들 수 있습니다.

$ cat > class1.py <<\EOF
class Class1:
    OKBLUE = '\033[94m'
    ENDC = '\033[0m'
    OK = OKBLUE + "[Class1 OK]: " + ENDC
EOF

3 단계 : 이제 코드가 클래스 이름이 Class2 인 class2.py 파일을 만들 수 있습니다.

$ cat > class2.py <<\EOF
class Class2:
    OKBLUE = '\033[94m'
    ENDC = '\033[0m'
    OK = OKBLUE + "[Class2 OK]: " + ENDC
EOF

4 단계 : 이제 하나의 main.py를 만들어 두 개의 다른 파일에서 Class1 및 Class2를 사용하기 위해 한 번 실행됩니다.

$ cat > main.py <<\EOF
"""this is how we are actually calling class1.py and  from that file loading Class1"""
from class1 import Class1
"""this is how we are actually calling class2.py and  from that file loading Class2"""
from class2 import Class2

print Class1.OK
print Class2.OK
EOF

5 단계 : 프로그램 실행

$ python main.py

출력은

[Class1 OK]:
[Class2 OK]:


답변

파이썬 3


동일 directory합니다.

가져 오기 파일 :log.py

수입 클래스 : SampleApp().

import log
if __name__ == "__main__":
    app = log.SampleApp()
    app.mainloop()

또는

디렉토리는 basic입니다.

파일로 가져 오기 : log.py.

수입 클래스 : SampleApp().

from basic import log
if __name__ == "__main__":
    app = log.SampleApp()
    app.mainloop()