Cara menggunakan fungsi __iter__() dalam Python untuk menentukan kebolehubahan objek

WBOY
Lepaskan: 2023-08-21 22:05:11
asal
778 orang telah melayarinya

Cara menggunakan fungsi __iter__() dalam Python untuk menentukan kebolehubahan objek

Cara menggunakan fungsi __iter__() dalam Python untuk mentakrifkan kebolehubahan objek

Dalam Python, objek boleh lelaran merujuk kepada objek yang boleh dilalui melalui lelaran. Untuk objek menjadi objek boleh lelaran, kelasnya mesti melaksanakan fungsi __iter__(). Fungsi ini mengembalikan objek iterator yang melaksanakan kaedah __next__().

Format asas fungsi __iter__() adalah seperti berikut:

def __iter__(self):
    # 返回一个迭代器对象
    return self
Salin selepas log masuk

Berikut ialah contoh untuk menunjukkan cara menggunakan fungsi __iter__() untuk mentakrifkan kebolehulangan sesuatu objek.

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)
Salin selepas log masuk

Dalam contoh di atas, kami menentukan kelas yang dipanggil FibonacciSequence untuk menjana jujukan Fibonacci. Dalam kaedah permulaan kelas __init__(), kita lulus dalam parameter n untuk mewakili panjang jujukan Fibonacci yang akan dijana. Fungsi __iter__() mengembalikan objek iterator sendiri, dan objek iterator yang melaksanakan kaedah __next__() boleh dilalui menggunakan gelung for.

Dalam kaedah __next__(), kami menggunakan self.count untuk merekodkan panjang jujukan Fibonacci yang dijana pada masa ini (iaitu, bilangan nombor yang telah dikembalikan apabila self.count kurang daripada n, kami menggunakan Fibonacci Peraturan jujukan Bonacci menjana nombor seterusnya, berikan self.b kepada self.a, tetapkan jumlah self.a dan self.b kepada self.b, dan tambahkan self.count sebanyak 1. Apabila self.count bersamaan dengan n, kami membuang pengecualian StopIteration, yang merupakan tanda akhir iterator.

Akhir sekali, dalam atur cara utama, kami membuat instantiat fib objek FibonacciSequence dengan memasukkan nilai n, hantarkannya ke dalam gelung for untuk melintasi, dan mencetak n nombor pertama jujukan Fibonacci satu demi satu.

Melalui contoh di atas, kita boleh melihat cara menggunakan fungsi __iter__() untuk menentukan kebolehubahan sesuatu objek. Selagi objek melaksanakan fungsi __iter__() dan mengembalikan objek iterator yang melaksanakan kaedah __next__(), anda boleh gunakan untuk gelung dan kaedah lain untuk melelaran melaluinya. Kaedah ini membolehkan objek tersuai kami dilalui seperti senarai terbina dalam Python, kamus dan objek lain.

Atas ialah kandungan terperinci Cara menggunakan fungsi __iter__() dalam Python untuk menentukan kebolehubahan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan