작성
·
246
답변 4
1
1
class Tesla(object):
def __init__(self, owner, color):
self.owner = owner
self.color = color
def __str__(self):
return f"{self.color} color {self.owner}'s car"
def __len__(self):
return len(self.owner)
def __del__(self):
print("this car deleted")
def __eq__(self, other):
return self.color == other.color
tesla = Tesla("A", "Yellow")
tesla1 = Tesla("B", "Yellow")
print(tesla == tesla1)
0
안녕하세요 taeho7702님,
혹시 테스트 하실때 그냥 터미널에서 python 파일을 실행하시나요? 그렇게 된다면 GC(Garbage Collector)가 실행되어 __del__ 실행될 겁니다. 그렇지 않고 Jupyter notebook이나 Replit을 사용하신다면 GC가 나중에 세션이 끝나고 실행이 되기 때문에, 다른 밑에 두개의 프린트는 뜨지 않습니다 ㅎㅎㅎ
0
안녕하세요 taeho7702님,
제가 코드를 보지 않고는 질문이 잘 이해가 안 가는데, del tesla
를 하지 않고서는 __del__
이 실행이 되지는 않을 것 같습니다. 보통 이 Destructor는 Garbage Collector가 작동할 때, 즉 Object에 참조하는 것이 없어질때 실행되는데, 왜 그런 일이 일어났을까요? 혹시 코드를 올려주시면 제가 답변하는데 도움이 될 것 같습니다.
평소 Replit을 사용하였는데 다시 시도해 보아도 계속해서 동일하게 3줄이 출력되네요 혹시나 해서 Jupyter notebook을 사용해 보았는데 True만 정상 출력되는 것은 확인했습니다 Replit의 설정을 건드리는 기억은 없는데 어떠한 이유인지는 모르겠네요 답변 감사합니다