【发布时间】:2012-06-20 15:28:13
【问题描述】:
向从同一类派生的子类添加一组通用方法/属性的正确方法是什么?
假设这些是我制作基于动物的视频游戏所需的课程(这只是一个例子,我并不是真的在写游戏,但想法是一样的)
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!"
我从答案中得到的是,如果我需要整套“武器/弹药”,我可以使用多职业,否则组合就是要走的路。
【问题讨论】:
-
不,这不是家庭作业,谢谢你的提问 =)
-
+1 武器化鸭子的想法。
-
我不知道什么是mixin,现在查一下。
-
@DSM(如果你得到参考,+1),这就是为什么我去任何地方都没有我的猎鸭炭疽病。