我正在工作的一個小方項目,並已做出一些類和方法。其中一個類代表我們庫存中的一個貨架,另一個代表貨架上的每個貨架。我有一個方法來添加一個新的bin到貨架上,並且我添加了一些邏輯來確保它在被添加到貨架之前傳遞了一個Location對象(現在我在開發之前使用列表將所有內容移動到數據庫)。pythonic方式來檢查參數類型
但是我剛剛在一本Python書中讀到,我認爲在出現異常時通常會更好,而不是添加額外的代碼。我刪除了邏輯,看看我會得到什麼錯誤,但我沒有得到任何東西,它允許一個字符串代替Location對象。
是否有更強大的Pythonic方法來強制執行參數類型?
我有架子什麼:
class CrossDock:
locations = []
def add_location(self, location):
if isinstance(location, Location): #if this is commented out it will take what ever is passed to it
self.locations.append(location)
else:
print("location parameter must be of type: Location. Parameter is of type" + str(type(location)))
有沒有一種方法,我可以用一個try /做到這一點,除了塊?
注:您的'locations'字段是類字段,而不是一個實例字段。所有'CrossDock'實例將共享相同的副本。爲了解決這個問題,定義一個'__init__'方法並在那裏設置'self.locations'。 – user2357112
只有一個CrossDock的實例,我是否應該將位置字段放在__init__方法中? – IanAuld
是的。它在概念上屬於這種情況;如果你想製作更多的CrossDock,你會希望他們有單獨的列表。 – user2357112