我想通过添加一些一致性检查来增强我的模型的实现(这个值不能是负数,这个不能是None等)。
我想知道它是否是«Pythonic»来添加一些«类型检查»-ish检查。例如,检查我放入Car的对象是否确实是SteeringWheel。
我确实想要执行某种类型的检查,以便尽快发现错误。我想知道是否在我把它放入汽车的时候添加了一个合适的SteeringWheel,而不是当汽车第一次转弯时(然后通过汽车残骸调试我的方式直到找到错误的指定)。
我读到,在Python的duck类型哲学中,更多的是检查添加的对象的属性或方法而不是它的类型。我理解这个原则,但这意味着模型必须知道如何使用对象来检查给定对象是否正确,并在模型和控制器之间创建错误的依赖关系。
此外,应该测试哪些属性? wheel.rotate()
可以应用于SteeringWheel,也适用于轮胎。
另一种方法是让模型保持原样,并通过try-catch包围对Model对象的每次使用,期望a AttributeError
或{{1}这将是非常麻烦的。
也许我错了想要这个,如果有人能说服我,我有错误的想法,请做。但是如果你认为我想要一个在变得不一致的情况下引发错误的模型是正确的,除了使用TypeError
之外,你能告诉我一种方法吗?
谢谢。
答案 0 :(得分:0)
您可能希望在此处使用AbstractBaseClasses(https://docs.python.org/2/library/abc.html)。 pep 3119(http://legacy.python.org/dev/peps/pep-3119/#rationale)的基本原理正是关于你的问题(确保objet支持给定的协议而不进行临时检查或严格的类型检查)。