将一组通用方法/属性添加到从同一类派生的子类的正确方法是什么?
假设这些是我的基于动物的视频游戏所需的课程(这只是一个例子,我并不是真的在写游戏,但想法是一样的)
class Animal():
def __init(self, numlegs):
self.numlegs = numlegs
class Dog(Animal):
def __init(self, numlegs):
Animal.__init__(self, numlegs)
def bark(self):
print "Arf!"
class Cat(Animal):
def __init(self, numlegs):
Animal.__init__(self, numlegs)
def playwithmouse(self):
print "It's fun!"
class Duck(Animal):
def __init(self, numlegs):
Animal.__init__(self, numlegs)
def fly(self):
print "Weee!"
在游戏中的某个时刻 Dog 和 Duck 可以武器化,它们需要具有相同的方法:fire()、reload() 和属性:ammocount。
我认为将它们添加到 Animal() 类中是不正确的,因为在游戏的完全不同的部分中将需要它们。
添加它们的正确方法是什么?
更新 我想补充一点,预期的结果是某种动物 - 武器混合类
class BurtalDuck(Duck):
fire(): #<- this is somehow added to Duck
print "ratatatatat!"
我从答案中得到的是,如果我需要整套“武器/弹药”,我可以使用多职业,否则组合就是要走的路。