关于我是否会以最好的方式做某事的问题......
我想在 Python 中有一个类层次结构,看起来(至少)如下所示;
class Actor
class Mover(Actor)
class Attacker(Actor)
class Human(Mover, Attacker)
但是我遇到了这样一个事实,即我想从每个子类Actor
中初始化某个属性,如下所示;Mover
Attacker
class Actor:
_world = None
def __init__(self, world):
self._world = world
class Mover(Actor):
_speed = 0
def __init__(self, world, speed):
Actor.__init__(self, world)
self._speed = speed
class Attacker(Actor):
_range = 0
def __init__(self, world, range):
Actor.__init__(self, world)
self._range = range
如果我当时采用我最初的方法,并按照我在使用超类构造函数方面一直使用的方法,我显然最终会调用Actor
构造函数两次——这不是问题,但我的程序员感觉到刺痛并说我'宁愿以更清洁的方式进行;
class Human(Mover, Attacker):
def __init__(self, world, speed, range):
Mover.__init__(self, world, speed)
Attacker.__init__(self, world, range)
例如,我只能调用Mover
构造函数,并简单地初始化Human
' _range
,但这是一种更糟糕的方法,因为它复制了 . 的初始化代码Attacker
。
就像我说的,我知道将_world
属性设置两次没什么大不了的,但是您可以想象,如果在 中进行更密集的操作Actor.__init__
,这种情况会令人担忧。任何人都可以建议在 Python 中实现这种结构的更好做法吗?