Python函数重载
我知道Python不支持方法重载,但我遇到了一个问题,我似乎无法以一种漂亮的Pythonic方式解决这个问题。
我正在制作一个角色需要射击各种子弹的游戏,但是如何编写不同的功能来制作这些子弹呢?例如,假设我有一个函数可以创建一个以给定速度从A点到B点行进的子弹。我会写一个这样的函数:
def add_bullet(sprite, start, headto, speed): ... Code ...
但我想写其他功能来创建子弹,如:
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 ...
等等有很多变化。有没有更好的方法来做到这一点,而不使用这么多的关键字参数导致它快速变得有点难看。重命名每个功能,因为你要么是非常糟糕过add_bullet1
,add_bullet2
或add_bullet_with_really_long_name
。
要解决一些问题:
不,我无法创建Bullet类层次结构,因为它太慢了。管理项目符号的实际代码在C中,我的函数是围绕C API的包装器。
我知道关键字参数,但检查各种参数组合变得烦人,但默认参数有助于分配 acceleration=0
喵喵时光机
相关分类