我正在工作的一个小方项目,并已做出一些类和方法。其中一个类代表我们库存中的一个货架,另一个代表货架上的每个货架。我有一个方法来添加一个新的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