0

我想通过添加一些一致性检查来增强我的模型的实现(这个值不能是负数,这个不能是 None 等)

我想知道添加一些“类型检查”-ish 检查是否是“Pythonic”。例如,检查我放入 Car 中的对象是否确实是 SteeringWheel。

我确实想执行某种类型检查以尽快发现错误。我想知道我是否在将 SteeringWheel 放入汽车的那一刻添加了正确的 SteeringWheel,而不是在汽车第一次转弯时(然后在汽车残骸中调试我的方式,直到找到错误的分配)。

我读到在 Python 的鸭子类型哲学中更多的是检查添加的对象的属性或方法而不是其类型。我理解这个原则,但这意味着模型必须知道如何使用对象以检查给定对象是否正确,这会在模型和控制器之间产生错误的依赖关系。

此外,应该测试哪些属性?wheel.rotate()可以应用于 SteeringWheel,也可以应用于轮胎。

另一种方法是让模型保持原样,并通过 try-catch 围绕模型对象的每次使用,期望 aAttributeError或 a TypeError,这将非常麻烦。

也许我想要这个是错误的,如果有人能说服我我有错误的想法,请这样做。但是,如果您认为我想要一个在不一致时引发错误的模型是正确的,您能告诉我除了使用之外的其他方法isinstance()吗?

谢谢你。

4

1 回答 1

0

您可能想在此处使用 AbstractBaseClasses ( https://docs.python.org/2/library/abc.html )。pep 3119(http://legacy.python.org/dev/peps/pep-3119/#rationale)中的基本原理正是关于您的问题(确保对象支持给定协议而无需临时检查或严格的类型检查)。

于 2014-10-23T12:34:46.857 回答