Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Multiple Dispatch Mensimulasikan Kaedah Lebih Muatan dalam Python?
Dalam Python, method overloading, di mana berbilang fungsi dengan nama yang sama menerima jenis argumen yang berbeza, tidak disokong. Walau bagaimanapun, konsep ini boleh direplikasi menggunakan berbilang penghantaran.
Berbilang penghantaran membolehkan fungsi dipilih secara dinamik berdasarkan jenis masa jalan berbilang argumen. Ini menghapuskan keperluan untuk fungsi terlebih beban dengan nama yang berbeza.
Sebagai contoh, anda boleh mempunyai beberapa fungsi add_bullet untuk mencipta bulet dengan parameter yang berbeza-beza:
def add_bullet(sprite, start, headto, speed): # Bullet traveling from point A to B with a given speed def add_bullet(sprite, start, direction, speed): # Bullet traveling in a specified direction def add_bullet(sprite, start, curve, speed): # Bullet with a curved path
Pakej multipledispatch menyediakan cara untuk melaksanakan berbilang penghantaran dalam Python. Berikut ialah contoh:
from multipledispatch import dispatch @dispatch(Sprite, Point, Point, int) def add_bullet(sprite, start, headto, speed): print("Called Version 1") @dispatch(Sprite, Point, Point, int, float) def add_bullet(sprite, start, headto, speed, acceleration): print("Called Version 2") sprite = Sprite('Turtle') start = Point(1, 2) speed = 100 add_bullet(sprite, start, Point(100, 100), speed) # Calls Version 1 add_bullet(sprite, start, Point(100, 100), speed, 5.0) # Calls Version 2
Dalam contoh ini, berbilang versi fungsi add_bullet dihantar berdasarkan jenis hujah yang disediakan.
Berbilang penghantaran memberikan beberapa kelebihan berbanding kaedah terlebih muatan:
Atas ialah kandungan terperinci Bagaimanakah Multiple Dispatch Mensimulasikan Kaedah Lebih Muatan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!