개요
Python에서 로그를 출력할 때, 어떤 클래스에서 동작하는 함수인지를 확인하려고 한다. 그래서 클래스의 이름을 출력하고 싶다.
방법을 적어둔다.
__class__.__name__
Python의 모든 객체는 __class__라는 속성을 가지는데, __class__ 속성에는 객체의 데이터 타입, 즉 클래스에 대한 정보가 저장되어 있다. 그 중 클래스의 이름은 __class__.__name__ 속성에 접근하여 사용할 수 있다.
class Character():
def __init__(self):
self.life = 1000
def print(self):
print(self.__class__.__name__)
lisa = Character()
lisa.print()
__class__는 일반적으로 터미널이나 콘솔에서 일회성으로 빠르게 확인하는 용도로 사용한다.
type().__name__
type()은 Python의 내장 함수로 객체를 인자로 받아 객체의 데이터 타입을 반환한다. __class__ 속성과 마찬가지로, 클래스의 이름에 접근할 떄는 __name__ 속성을 사용한다.
아래 코드는 Character의 하위 클래스인 Warrior로 생성한 객체의 클래스 이름을 확인해보는 예시이다.
class Character():
def __init__(self):
self.life = 1000
def print(self):
print(type(self).__name__)
class Warrior(Character):
pass
james = Warrior()
james.print()
하위 클래스의 객체를 생성하면 부모 클래스에서 클래스 이름을 접근해도 자식 클래스의 이름으로 반환되는 것을 알 수 있다.
참고 문서
https://www.daleseo.com/python-class-type-isinstance/