본문 바로가기
파이썬

파이썬 TypeError : '클래스'개체를 호출 할 수 없습니다.

by º기록 2021. 1. 2.
반응형

나는 가지고있다 :

주요 스크립트 :

import music.umm
UMM = music.umm.UMM()
UMM.read_information()

모듈 스크립트 :

    class UMM(object):

    def read_information(self):
    ..some code
    UMM.login()

UMM = UMM()

이 코드를 사용하면 기본 스크립트를 실행할 때이 오류가 발생합니다.

TypeError : 'UMM'개체를 호출 할 수 없습니다.

어떻게 고치나요?

편집하다:

이 줄에서 모듈을 제거합니다.

UMM = UMM()

이제 기본 스크립트가 함수 모듈을 실행하지만 스크립트 모듈이 다른 함수로 이동하면 다음 오류가 발생합니다.

TypeError : 언 바운드 메소드 login ()은 UMM 인스턴스와 함께 호출되어야합니다. 첫 번째 인수 (대신 아무것도 없음)

 

해결 방법

 

나는 당신이 우리에게 제공하는 작은 정보에도 불구하고 돕기 위해 노력하고 있습니다.

SSCCE는 다음과 같을 수 있습니다.

umm.py :

class UMM(object):
    def login(self):
        print("login()")
    def read_information(self):
        print("read_info() 1")
        UMM.login()
        print("read_info() 2")

메인 스크립트 :

import umm
umm = umm.UMM()
umm.read_information()

나는 그것을 테스트하지 않았지만 이것이 정확히 다음과 같은 예외를 낳을 것이라고 상상합니다.

TypeError: unbound method login() must be called with UMM instance as first argument (got nothing instead)

그 이유는 UMM.login () 이 객체의 인스턴스를 통해 호출 될 것으로 예상되는 메서드이기 때문입니다.

read_information () 내부에는 구체적인 객체 인스턴스로 self 가 있습니다. 그래서 당신은 전화를 바꿀 수 있습니다

        UMM.login()

        self.login()

모든 종속성을 충족시키기 위해.

UMM.login () 에 대한 호출은 작업 할 개체 인스턴스없이 login () 을 호출하려고합니다. 이것은 @staticmethod 또는 @classmethod 와 함께 작동하지만 일반 바인딩 된 메소드에서는 작동하지 않습니다.

 

참조 페이지 https://stackoverflow.com/questions/19752634

 

 

반응형

댓글