我正在做一个小的副业项目,并制作了一些类和方法。其中一个类代表我们库存中的一个货架,另一个代表货架上的每个箱子。我有一个方法可以将一个新的垃圾箱添加到货架上,我添加了一些逻辑以确保它在添加到货架之前传递了一个 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 block 来做到这一点?
最佳答案
向调用者传播异常。这会强制您的类的用户在 滥用类时修复无效类型。打印没有用,因为它不强制执行接口(interface)契约(Contract)。
class CrossDock(object):
def __init__(self):
self.locations = []
def add_location(self, location):
if isinstance(location, Location):
self.locations.append(location)
else:
raise TypeError("location must be Location, got: " +
repr(type(location)))
关于检查参数类型的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20673087/