在我正在编写的Python游戏中,我有两个类:ShipType和Ship。一个飞船对象代表一个特定的飞船,它有自己的名字,年龄,库存等。。。ShipType对象表示一条船的“线”(就像马自达Protege是一条车的“线”),它有自己的名字、该类型船的基本统计数据、空间价格中的Kelley Bluebook等等
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
...
如您所见,这个构造函数中发生的大部分事情只是将相同名称的属性从传递的对象复制到self。我想知道的是,有没有更简单的方法?你知道吗
值得注意的是,ShipType上有一些属性不应该在船上。你知道吗
你可以这样做:
getattr
和setattr
函数允许您获取/设置名称存储在字符串中的属性。因此,您可以指定要复制的属性的名称列表,然后通过在列表上循环简洁地复制它们。你知道吗相关问题 更多 >
编程相关推荐