在我正在编写的 Python 游戏中,我有两个类;船舶类型和船舶。Ship 对象代表具有自己的名称、年龄、库存等的特定宇宙飞船... ShipType 对象代表船舶的“线”(如 Mazda Protege 是汽车的“线”),具有自己的名称、底座该类型船的统计数据,Kelley Bluebook In Space 价格等。
Ship 的构造函数将 ShipType 作为参数,因为所有 Ship-s 都应该从 ShipType 派生。该构造函数如下所示:
...
def __init__(self,theshiptype):
if not isinstance(theshiptype,ShipType):
raise TypeError
self.name=theshiptype.name
self.inventory=Inventory(theshiptype.invslots)
self.maxhp=theshiptype.maxhp
self.thrust=theshiptype.thrust
self.ftlspeed=theshiptype.ftlspeed
...
正如你所看到的,这个构造函数中发生的大部分事情只是将同名的属性从传递的对象复制到自身。我想知道的是,有没有更短的方法来做到这一点?
值得注意的是,ShipType 上的某些属性不应该出现在 Ship 上。