私が書いているPythonゲームには、2つのクラスがあります。ShipType、およびShip。Shipオブジェクトは、独自の名前、年齢、在庫などで特定の宇宙船を表します。ShipTypeオブジェクトは、独自の名前、ベースで、船の「ライン」を表します(Mazda Protegeは車の「ライン」です)。そのタイプの船の統計、Kelley BluebookInSpaceの価格など。
すべてのShip-sはShipTypeから派生する必要があるため、Shipのコンストラクターは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に含めるべきではないプロパティがいくつかあることに注意してください。