컴퓨터/자료구조와 함께 배우는 알고리즘 입문
4. __len__(), __contains__()
스커
2020. 9. 1. 20:54
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