Python에서 __iter__() 함수를 사용하여 객체의 반복성을 정의하는 방법
Python에서 반복 가능한 객체는 반복자를 통해 탐색할 수 있는 객체를 나타냅니다. 객체가 반복 가능한 객체가 되려면 해당 클래스가 __iter__() 함수를 구현해야 합니다. 이 함수는 __next__() 메서드를 구현하는 반복자 객체를 반환합니다.
__iter__() 함수의 기본 형식은 다음과 같습니다.
def __iter__(self): # 返回一个迭代器对象 return self
다음은 __iter__() 함수를 사용하여 객체의 반복 가능성을 정의하는 방법을 보여주는 예입니다.
class FibonacciSequence: def __init__(self, n): self.n = n self.a, self.b = 0, 1 self.count = 0 def __iter__(self): # 返回一个迭代器对象 return self def __next__(self): if self.count < self.n: self.a, self.b = self.b, self.a + self.b self.count += 1 return self.a else: raise StopIteration n = int(input("请输入斐波那契数列的长度:")) fib = FibonacciSequence(n) print("斐波那契数列前", n, "个数字为:") for num in fib: print(num)
위의 예에서는 FibonacciSequence라는 클래스를 정의하여 피보나치 수열을 생성했습니다. 클래스 초기화 메소드 __init__()에서는 생성될 피보나치 수열의 길이를 나타내기 위해 매개변수 n을 전달합니다. __iter__() 함수는 반복자 객체 자체를 반환하고, __next__() 메서드를 구현하는 반복자 객체는 for 루프를 사용하여 탐색할 수 있습니다.
__next__() 메서드에서는 self.count를 사용하여 현재 생성된 피보나치 수열의 길이(즉, 반환된 숫자의 수)를 기록합니다. self.count가 n보다 작을 때 Fibonacci를 사용합니다. 보나치 수열의 규칙은 다음 숫자를 생성하고, self.b를 self.a에 할당하고, self.a와 self.b의 합을 self.b에 할당하고, self.count를 1만큼 증가시킵니다. self.count가 n과 같으면 반복자의 끝 표시인 StopIteration 예외가 발생합니다.
마지막으로 메인 프로그램에서는 n 값을 입력하여 FibonacciSequence 개체 fib를 인스턴스화하고 이를 for 루프에 전달하여 순회한 다음 피보나치 수열의 처음 n개 숫자를 하나씩 인쇄합니다.
위의 예를 통해 __iter__() 함수를 사용하여 객체의 반복 가능성을 정의하는 방법을 확인할 수 있습니다. 객체가 __iter__() 함수를 구현하고 __next__() 메서드를 구현하는 반복자 객체를 반환하는 한 for 루프 및 기타 메서드를 사용하여 이를 반복할 수 있습니다. 이 방법을 사용하면 사용자 정의 개체를 Python의 내장 목록, 사전 및 기타 개체처럼 탐색할 수 있습니다.
위 내용은 Python에서 __iter__() 함수를 사용하여 객체의 반복성을 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!