이를 알기 위해 self
변수에 대한 이해가 선행되어야 한다.
앞서 만든 매직메서들에는 self
가 첫 파라미터로 정해져있었다.
def __str__(self):
return 'str : {} - {}'.format(self._company, self._details)
def __repr__(self):
return 'repr : {} - {}'.format(self._company, self._details)
그리고 여기서… 한가지 재미있는 메서드가 나온다. 바로
id()
이다.
#id 확인
print(id(car1))
print(id(car2))
print(id(car3))
각 객체마다 고유의 id라는게 나오는데… 이게 뭘까? 해쉬값일까? 어쨌든 각각이 다른 객체라는걸 알 수 있다. self
변수도 각 인스턴스 내부에 각각 있다.. 그냥 this
랑 같다..
그리고… 또 지나가듯이 한가지 나온다.
is
키워드이다. 이 친구는 인스턴스끼리의 id값을 비교한다.
또 지나가듯이 언급하는데, 파이썬에서도 모든 클래스는 Object클래스를 상속받는다고 한다.
이런 언급을 생각해보면… 파이썬이 클래스 기반 OOP인지, 프로토타입 기반 OOP인지 고민해볼 필요가 있다. 보통 Object클래스를 상속받는다고 표현하면 전자일 확률이 크다. 실제로 확인해보면… 클래스기반 OOP라고 한다. 휴
이 매직메서드는 자바로 치면 javadoc을 출력한다!
class Car():
"""
Car class
Author : jo
Date : 2024.12.02
"""
def __init__(self, company, details):
self._company = company
self._details = details
# Doctring
print(Car.__doc__)