본문 바로가기
개발일지/Python

*매우중요 Python class4 - 상속 __str__, __len__

by 개발에정착하고싶다 2022. 9. 28.
320x100

기본적으로 class는 각 메서드를 정의할때 return 을 사용하는게 올바르며

이유는 자세히 모르겠지만 문자출력은 __str__을 통해서 해야하고

정수 출력은 __len__로 해야하는 것 같다.

 

# durdle 이라는 특수 메서드
# durdle이라는 뜻은 메서드 콜 양쪽에 밑줄이 더블로 들어가는 __init__같은거라고 보면 되는것 같다.

# 무엇이 도움이 되고, 무엇이 도움이 안되는지 확인하는 용도로 class를 정의한다고 한다.
class Book():
    
    def __init__(self, title, author, pages):
        self.title = title
        self.author = author
        self.pages = pages

    # 무언가 해당 class를 통해서 글씨로 출력하고 싶은것이 있을때 정의 해준다고한다.
    # print와 같은 내장함수다.
    def __str__(self):
        # print를 사용하면 안된다고 한다.
        return f'{self.title} written by {self.author}'

    # 무언가 해당 class를 통해서 정수로 출력하고 싶은것이 있을때 정의 해준다고한다.
    def __len__(self):
        # f_string으로 출력하려고 보니깐 어쨌든 f_string도 문자라서 에러가 뜬다;
        return self.pages
        
'''
mybook = Book('Python Rocks', 'Jose', 120)
print(mybook)
# <__main__.Book object at 0x7f99700080d0>
'''

mybook = Book('Python Rocks', 'Jose', 120)
print(mybook)
# Python Rocks written by Jose

print(len(mybook))
# 120
300x250