簡體   English   中英

在Python類中檢查屬性的有效性

[英]Checking for properties' validity in Python classes

我應該在哪里編寫代碼來檢查類屬性的有效性? (例如:“amount”應為正整數,“email”應為具有正確電子郵件格式的字符串)在setter方法中,在某處我使用它(使用try / catch)或其他。

如果我在setter方法檢查有效性,它可能看起來很丑陋(如類型檢查)。 但是如果我在使用它時檢查它,重復的代碼可能會在多次使用時出現。

(抱歉我的英語不好。)

如果你需要這樣做,肯定在setter中做。

首先,setter可能比getter更少被調用,因此你的工作量減少了。

其次,你早先發現了問題。

第三,它保持對象的內部狀態一致。 保留不良數據意味着您知道您的對象是“正確的”。

如果它看起來像丑陋的類型檢查,那可能是因為它。 如果“amount”絕對需要是一個正整數,並且如果不是那么模塊的其余部分將會嚴重失敗,那么你需要進行一些類型檢查。

但是,這樣做的python方法只是檢查所需的實際屬性。

在正整數示例中,這意味着不檢查該值是否為Int對象,而是檢查它是否具有值,並且該值> 0.這使得其他程序員可以傳遞您的方法對象,其行為類似於數字,而不是嚴格約束他們的類型。

電子郵件示例也是如此 - 檢查它是否格式正確(匹配您正在使用的任何電子郵件正則表達式),但不要堅持它是Str類的實例。 除了您實際要使用的屬性外,不要在有效性檢查中堅持任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM