program story

파이썬 : self .__ class__ vs. type (self)

inputbox 2020. 12. 2. 21:04
반응형

파이썬 : self .__ class__ vs. type (self)


이 질문에 이미 답변이 있습니다.

차이점이 있는지 궁금합니다.

class Test(object):
    def __init__(self):
        print self.__class__.__name__

class Test(object):
    def __init__(self):
        print type(self).__name__

?

둘 중 하나를 선호하는 이유가 있습니까?

(내 사용 사례에서는 로거 이름을 결정하는 데 사용하고 싶지만 이것은 중요하지 않은 것 같습니다)


>>> class Test(object): pass
>>> t = Test()
>>> type(t) is t.__class__
True
>>> type(t)
__main__.Test

그래서 그 두 가지는 동일합니다. 그것이 무엇인지 더 분명 하기 self.__class__때문에 나는 사용할 것입니다.

그러나 type(t)이전 스타일 클래스의 인스턴스 instance유형은 다음과 같고 새 스타일 클래스 인스턴스 의 유형은 해당 클래스이므로 이전 스타일 클래스에서는 작동하지 않습니다 .

>>> class Test(): pass
>>> t = Test()
>>> type(t) is t.__class__
False
>>> type(t)
instance

내가 아는 한, 후자는 전자를 수행하는 더 좋은 방법입니다.

파이썬은 고려에서 실제로 이상한 아니다 repr(x), 어떤 단지 전화 x.__repr__()또는 len(x), 단지 전화를 x.__len__(). Python은 다양한 클래스에서 사용할 가능성이 높은 일반 함수에 내장 기능을 사용하는 것을 선호하며 일반적으로 __x__()메서드 를 호출하여이를 구현 합니다.

참고 URL : https://stackoverflow.com/questions/10386166/python-self-class-vs-typeself

반응형