0
我想定義一個類,以確保在設置/修改屬性時有一些約束。此外,我希望能夠以相同的約束條件設置施工時的財產價值。簡單的例子:從__init設置Python屬性__()
class MyClass(object):
def __init__(self, attrval):
self.myattr = attrval
@property
def myattr(self):
return self._myattr
@myattr.setter
def myattr(self, value):
if value is None:
raise ValueError("Attribute value of None is not allowed!")
self._myattr = value
我打電話屬性setter直接從INIT(),因此其屬性就是self._myattr可直接訪問的唯一場所。在使用這樣的屬性時是否有任何問題或警告(如_myattr的缺失或無效創建)?也許當(多重)繼承進來時?是否有關於如何正確初始化init()的屬性的PEP或其他「官方」聲明?
我發現的大多數屬性示例都沒有使用構造函數中的屬性setter。在How to set a python property in __init__中,在設置屬性之前,會明確創建基礎屬性。有些人認爲每個單獨的屬性都必須在init()中明確初始化,這就是爲什麼我的代碼示例感覺有點奇怪。