J: Ya, kelas dalam Python boleh mengandungi kelas lain dipanggil kelas bersarang atau jenis bersarang. Sintaks untuk menentukan kelas bersarang dalam kelas adalah sama seperti untuk menentukan kelas dalam modul. Sebagai contoh, berikut ialah contoh yang mengandungi kelas bersarang:
class OuterClass: def __init__(self): self.inner = self.InnerClass() class InnerClass: def __init__(self): self.inner_var = 42 outer = OuterClass() print(outer.inner.inner_var) # 输出:42
Dalam contoh ini, OuterClass mengandungi kelas InnerClass bersarang dan instance InnerClass dimulakan dalam pembina OuterClass. Pembolehubah ahli inner_var dalam InnerClass boleh diakses dengan mengakses outer.inner.inner_var.
Perlu diambil perhatian bahawa tiada sekatan akses khas antara kelas bersarang dan kelas luaran mereka boleh mengakses pembolehubah ahli dan kaedah masing-masing. Selain itu, kelas bersarang juga boleh menjadi statik atau dinamik (iaitu ia boleh mengandungi kaedah contoh atau tidak).
J: Dalam Python, kelas bersarang boleh mengakses pembolehubah ahli kelas luaran melalui nama pembolehubah nama kelas luaran. Sebagai contoh, dalam contoh sebelumnya, jika anda mahu InnerClass mengakses pembolehubah ahli outer_var OuterClass, anda boleh mengubah suai kod seperti berikut:
class OuterClass: def __init__(self): self.outer_var = 100 self.inner = self.InnerClass() class InnerClass: def __init__(self): outer_var = OuterClass.outer_var print(outer_var) outer = OuterClass() # 输出:100
Dalam contoh ini, pembina InnerClass lulus OuterClass.outer_var Kaedah mengakses pembolehubah ahli outer_var dalam OuterClass. Perlu diingatkan bahawa apabila mengakses pembolehubah ahli kelas luar, anda perlu menggunakan nama kelas luar, bukan diri, kerana kelas bersarang dan kelas luar adalah dua kelas berbeza.
A: Jika kelas B ditakrifkan dalam kelas A, maka dalam Mencipta B baharu? objek dalam fungsi B boleh dicapai dengan cara berikut:
class A: class B: def __init__(self, val): self.val = val def create_new_b(self, val): new_b = A.B(val) return new_b a = A() b = a.B(1) new_b = b.create_new_b(2) print(b.val) # 输出 1 print(new_b.val) # 输出 2
Dalam contoh ini, A mengandungi kelas B bersarang, dan init pembina B menerima val parameter. Kelas B juga mengandungi kaedah bernama create_new_b, yang menerima parameter val dan mencipta objek kelas B baharu menggunakan A.B(val). Kaedah create_new_b mengembalikan objek B yang baru dibuat. Objek kelas B baharu boleh dibuat dengan memanggil kaedah b.create_new_b(2), dengan b ialah tika kelas B dalam objek kelas A.
Perlu diambil perhatian bahawa apabila mencipta objek kelas B, anda perlu menggunakan A.B dan bukannya B. Ini kerana B bersarang dalam A, bukan dalam ruang nama global.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kelas bersarang dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!