在Python类中检查属性的有效性

时间:2010-02-03 18:41:52

标签: python

我应该在哪里编写代码来检查类属性的有效性? (例如:“amount”应为正整数,“email”应为具有正确电子邮件格式的字符串)在setter方法中,在某处我使用它(使用try / catch)或其他。

如果我在setter方法中检查有效性,它可能看起来很丑陋(如类型检查)。但是如果我在使用它时检查它,重复的代码可能会在多次使用时出现。

(抱歉我的英语不好。)

2 个答案:

答案 0 :(得分:4)

如果您需要这样做,请务必在设置器中执行此操作。

首先,setter的调用次数可能少于getter,所以你的工作量减少了。

其次,你早先发现了问题。

第三,它保持对象的内部状态一致。保存不良数据意味着您知道您的对象是“正确的”。

答案 1 :(得分:2)

如果它看起来像丑陋的类型检查,那可能是因为它。如果“amount”绝对需要是一个正整数,如果不是那么模块的其余部分将会严重失败,那么你需要进行一些类型检查。

但是,python方法只是检查你需要的实际属性。

在正整数示例中,这意味着不检查该值是否为Int对象,而是检查它是否具有值,并且该值是>这让其他程序员可以传递你的方法对象,这些对象就像数字一样,而不会严格限制它们的类型。

同样适用于电子邮件示例 - 检查它是否格式正确(匹配您正在使用的任何电子邮件正则表达式),但不要坚持它是Str类的实例。除了您实际要使用的属性外,不要在有效性检查中坚持任何内容。