>  기사  >  백엔드 개발  >  Python에서 __iter__() 함수를 사용하여 객체의 반복성을 정의하는 방법

Python에서 __iter__() 함수를 사용하여 객체의 반복성을 정의하는 방법

WBOY
WBOY원래의
2023-08-21 22:05:11774검색

Python에서 __iter__() 함수를 사용하여 객체의 반복성을 정의하는 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.