1. 클래스에 __len__() 함수를 정의하여 클래스의 인스턴스를 __len__() 함수에 전달할 수 있다.
obj.__len__()함수를 만들어 인스턴스의 리스트의 길이를 반환하는 함수를 만들었다. 하지만 obj.__len__()의 함수와 같은 기능을 하는 len(a)를 통해 인스턴스의 리스트의 길이를 반환하도록 할 수 있다.
class Node:
def __init__(self, num):
self.num = num
self.List = [None] * num
def __len__(self):
return self.num
def __contains__(self, target):
self.count = 0
for i in range(len(self.List)):
if self.List[i] is target:
return True
return False
a = Node(20)
print(a.__len__())
>>> 20
print(len(a))
>>> 20
2. 클래스에 __contains__() 함수를 정의하면 클래스형의 인스턴스에 멤버십 판단 연산자인 in을 적용할 수 있다.
즉, a.__contains__(target)은 target in a 와 같은 기능을 한다. (단, 반환인자는 bool type이어야 한다.)
class Node:
def __init__(self, num):
self.num = num
self.List = [None] * num
def __len__(self):
return self.num
def __contains__(self, target):
self.count = 0
for i in range(len(self.List)):
if self.List[i] == target:
return True
return False
print(a.__contains__(None))
>>> True
print(None in a)
>>> True
'컴퓨터 > 자료구조와 함께 배우는 알고리즘 입문' 카테고리의 다른 글
5. 멤버십 연산자와 표준 라이브러리를 사용한 문자열 검색 (0) | 2020.09.03 |
---|---|
3. 배열의 특징 (0) | 2020.08.31 |
2. 파이썬의 변수 알아보기 (0) | 2020.08.31 |
1. 조건 연산자를 사용하며 선언하기 (0) | 2020.08.30 |