Melaksanakan Berbilang Pembina dalam Python dengan Anggun dan Keanggunan
Walaupun Python mungkin tidak menyokong berbilang fungsi init secara eksplisit dalam sesebuah kelas, terdapat pendekatan alternatif untuk mencapai fungsi ini secara bersih dan pythonic cara.
Untuk menggambarkan masalah, pertimbangkan kelas Keju dengan sifat bilangan_lubang. Kami ingin mencipta kejadian menggunakan sama ada kiraan lubang yang ditentukan atau nilai rawak.
Pendekatan Argumen Lalai
Satu pendekatan melibatkan penggunaan argumen lalai untuk pembina. Jika tiada hujah diberikan, kiraan lubang menjadi lalai kepada 0, mewakili keju pepejal. Walau bagaimanapun, ini tidak membenarkan berbilang pembina yang berbeza.
class Cheese: def __init__(self, num_holes=0): if num_holes == 0: # Randomize number_of_holes else: number_of_holes = num_holes
Pendekatan Kaedah Kilang
Penyelesaian yang lebih elegan menggunakan kaedah kelas, dikenali sebagai kaedah kilang. Kaedah ini berfungsi sebagai pembina alternatif, membenarkan berbilang "pembina" bebas dengan logik permulaan yang berbeza-beza.
Untuk kelas Keju, kita boleh mencipta kaedah kelas untuk menjana keju dengan tahap kelubang yang berbeza-beza:
class Cheese(object): def __init__(self, num_holes=0): self.number_of_holes = num_holes @classmethod def random(cls): return cls(randint(0, 100)) @classmethod def slightly_holey(cls): return cls(randint(0, 33)) @classmethod def very_holey(cls): return cls(randint(66, 100))
Kini, kejadian boleh dibuat menggunakan kaedah kelas ini:
gouda = Cheese() # Creates a solid cheese emmentaler = Cheese.random() # Creates a cheese with a random hole count leerdammer = Cheese.slightly_holey() # Creates a cheese with a slightly holey structure
Pendekatan ini menggalakkan kebolehbacaan kod, fleksibiliti, dan pematuhan kepada prinsip pythonic. Kaedah kilang menyediakan cara yang jelas dan teratur untuk menentukan berbilang pembina dalam satu kelas, memenuhi senario permulaan yang berbeza.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Berbilang Pembina dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!