>source

클래스 인스턴스에 액세스하려고합니다. 사용자가 입력 한 내용에 따라 클래스에 액세스해야하므로로드 할 때 변수에 클래스를 할당 한 다음 사용할 수 없습니다.

즉 : 사용자가 website.com/classes/y 링크로 이동하면 이름이 y 인 인스턴스에 액세스해야합니다. 이미 링크를 처리하고 있으며 "y"또는 사용자가 직접 입력 한 내용을 얻을 수 있습니다.

다음과 같은 클래스 코드가 있습니다.

class LoadModel:
    existing_models = []
    def __init__(self, model_path):
        self.name = model_path.parent.name
        self.__class__.existing_models.append(self.name)

지금은 existing_models 목록을 사용하여 클래스가 존재하는지 확인할 수 있지만 self.name을 사용하여 어떻게 액세스 할 수 있습니까?

LoadModel.name을 사용하여 액세스하고 싶습니다.

  • 답변 # 1

    인스턴스에 대한 모델 이름 사전을 유지하려는 것 같습니다. 다음과 같이 할 수 있습니다.

    class LoadModel:
        modelsByName = {}
        def __init__(self, model_path):
            self.name = model_path.parent.name
            self.modelsByName[self.name] = self
    
    

    또한 이름이 지정된 인스턴스에 액세스하려는 경우 name 같이 LoadModel.name 당신은 추가 할 수 있습니다

    setattr(self.__class__, self.name, self)
    
    

    ...에 __init__ . 또는 문자열로 검색하는 경우 (당신처럼 들릴 수 있습니다) LoadModel.modelsbyName[name] .

    또한 사용할 필요가 없습니다. self.__class__ 가지고 있지 않은 클래스의 멤버에 액세스 할 때할당인스턴스 내에서 사전에만 액세스하고 있기 때문에목적클래스에 정의 된 경우 인스턴스 ( self.modelsByName ) 클래스에 명시 적으로 액세스하는 대신 ( self.__class__.modelsByName ).

관련 자료

  • 이전 node.js - 'tsc'프로그램을 실행하지 못했습니다이 작업에 대해 지정된 파일과 연결된 응용 프로그램이 없습니다
  • 다음 sql - 구체화 된 뷰에 FTS 전달