【发布时间】:2014-01-07 12:19:12
【问题描述】:
我正在为工作做一个小项目,并制作了一些类和方法。其中一个类别代表我们库存中的一个货架,另一个类别代表货架上的每个垃圾箱。我有一种方法可以将新箱添加到架子上,并且我添加了一些逻辑以确保在将其添加到架子之前将其传递给 Location 对象(现在我在将所有内容移动到数据库之前在开发时使用列表)。
但是,我刚刚在一本 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/except 块来做到这一点?
【问题讨论】:
-
注意:您的
locations字段是类字段,而不是实例字段。所有CrossDock实例将共享同一个副本。要解决此问题,请定义一个__init__方法并在其中设置self.locations。 -
只有一个 CrossDock 实例,我还应该将位置字段放在 init 方法中吗?
-
是的。它在概念上属于那个实例;如果您要制作更多
CrossDocks,您会希望它们有单独的列表。
标签: python class exception-handling parameter-passing