인프런 커뮤니티 질문&답변
2. 특수 메소드/ 3) 특수 메소드를 이용한 사례에 대해서
작성
·
252
0
class Book:
def __init__(self, title, author, pages):
self.title = title
self.author = author
self.pages = pages
def __str__(self):
return f"제목 : {self.title}, 저자 : {self.author}, 페이지 : {self.pages}"
def len(self):
return self.pages
book = Book("Data Structure", "Chun", 650)
print(book)
print(len(book))
위의 코드로 출력시
>>> TypeError: object of type 'Book' has no len()
위의 오류가 출력되는데
저의 경우에는 해당 오류 코드를
print(book.len())으로 변경하여 출력하였는데
이렇게 하는게 맞는지 궁금하여 글을 한번 남겨봅니다.
퀴즈
파이썬에서 가변(Mutable) 객체 인스턴스를 함수 인자로 전달할 때 발생하는 현상은 무엇일까요?
새로운 불변 객체가 생성됩니다.
원본 인스턴스의 참조(메모리 주소)가 전달됩니다.
인스턴스의 모든 속성 값이 복사됩니다.
함수 내에서 인스턴스를 수정할 수 없습니다.
답변 1
0
네 맞습니다. instance 인 book의 len() 함수를 불러오려면 위와같이 작성하시면 됩니다.
참고로 내장함수 len()은 아래와 같이 사용하시면 됩니다.
listA = [1,2,3,4,5]
print(len(listA))
list의 길이를 나타낼떄





