【发布时间】:2014-10-23 11:49:28
【问题描述】:
我想通过添加一些一致性检查来增强我的模型的实现(这个值不能是负数,这个值不能是 None 等)
我想知道添加一些“类型检查”-ish 检查是否是“Pythonic”。例如,检查我放入 Car 中的对象是否确实是 SteeringWheel。
我确实想执行某种类型检查以尽快发现错误。我想知道我是否在将 SteeringWheel 放入汽车的那一刻添加了正确的 SteeringWheel,而不是在汽车第一次转弯时(然后在汽车残骸中调试我的方式,直到找到错误的分配)。
我读到在 Python 的鸭子类型哲学中更多的是检查添加的对象的属性或方法而不是其类型。我理解这个原则,但这意味着模型必须知道如何使用对象才能检查给定对象是否正确,这会在模型和控制器之间产生错误的依赖关系。
此外,应该测试哪些属性? wheel.rotate() 可以应用于 SteeringWheel,也可以应用于轮胎。
另一种方法是让模型保持原样,并通过 try-catch 包围 每次对模型对象的使用,期望为 AttributeError 或 TypeError,然后会很麻烦。
也许我想要这个是错误的,如果有人能说服我我有错误的想法,请这样做。但是,如果您认为我想要一个在不一致时引发错误的模型是正确的,您能告诉我除了使用isinstance() 之外的其他方法吗?
谢谢。
【问题讨论】:
-
@ch3ka 这是一篇非常有趣的帖子。我不知道注释。
标签: python model typechecking data-consistency