programing

파이썬에서 클래스의 파일 경로를 가져오려면 어떻게 해야 합니까?

sourcejob 2023. 8. 7. 22:30
반응형

파이썬에서 클래스의 파일 경로를 가져오려면 어떻게 해야 합니까?

파이썬에서 클래스 C가 주어지면 클래스가 정의된 파일을 어떻게 확인할 수 있습니까?저는 클래스 C나 인스턴스 C에서 작동할 수 있는 것이 필요합니다.

제가 이 일을 하는 이유는 제가 일반적으로 같은 폴더에 함께 속한 파일을 보내는 것을 싫어하기 때문입니다.장고 템플릿을 사용하여 HTML로 렌더링하는 클래스를 만들고 싶습니다. 기본 구현은 클래스가 정의된 파일 이름을 기반으로 템플릿의 파일 이름을 추론해야 합니다.

예를 들어 "base/artifacts.py " 파일에 LocationArtifact 클래스를 넣었다고 가정하면 기본 동작은 템플릿 이름이 "base/LocationArtifact.html"입니다.

다음과 같이 검사 모듈을 사용할 수 있습니다.

import inspect
inspect.getfile(C.__class__)

시도:

import sys, os
os.path.abspath(sys.modules[LocationArtifact.__module__].__file__)

이것은 장고에게 잘못된 접근법이고 정말로 일을 강요합니다.

일반적인 장고 앱 패턴은 다음과 같습니다.

  • /프로젝트
    • /appname
      • models.py
      • views.py
      • /timeout
        • 색인.
        • 기타.

오류를 사용하여 클래스의 경로를 가져올 수 있습니다.

import os
import traceback
class C:
  def getClassPath(self):
    #get foldet path
    try:
        raise ValueError("Example error")
    except Exception as e:
        tb = traceback.extract_tb(e.__traceback__)
       
        return os.path.dirname(tb[-1].filename)
c = C()
print('path is',c.getClassPath())

언급URL : https://stackoverflow.com/questions/697320/how-do-i-get-the-filepath-for-a-class-in-python

반응형