I know that Python does not support method overloading, but I’ve run into a problem that I can’t seem to solve in a nice Pythonic way.
I am making a game where a character needs to shoot a variety of bullets, but how do I write different functions for creating these bullets? For example suppose I have a function that creates a bullet travelling from point A to B with a given speed. I would write a function like this:
def add_bullet(sprite, start, headto, speed): ... Code ...
But I want to write other functions for creating bullets like:
def add_bullet(sprite, start, direction, speed): def add_bullet(sprite, start, headto, spead, acceleration): def add_bullet(sprite, script): # For bullets that are controlled by a script def add_bullet(sprite, curve, speed): # for bullets with curved paths ... And so on ...
And so on with many variations. Is there a better way to do it without using so many keyword arguments cause its getting kinda ugly fast. Renaming each function is pretty bad too because you get either add_bullet1
, add_bullet2
, or add_bullet_with_really_long_name
.
To address some answers:
- No I can’t create a Bullet class hierarchy because thats too slow. The actual code for managing bullets is in C and my functions are wrappers around C API.
- I know about the keyword arguments but checking for all sorts of combinations of parameters is getting annoying, but default arguments help allot like
acceleration=0