1
在我寫的Python遊戲中,我有兩個類; ShipType和Ship。 Ship對象代表一個具有自己的名字,年齡,庫存等的特定宇宙飛船......一個ShipType對象表示一艘船的「一條線」(比如Mazda Protege是一條汽車線),它有自己的名字,base這種類型的船的統計數據,Kelley Bluebook In Space價格等。在Python中複製屬性的更優雅的方式3
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上的屬性。