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
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)
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!