我是Python屬性的新手。我想要使用它們來創建一個「setter」,以確保在設置相應屬性時屬性值在其允許的範圍內。我在類中訪問python屬性
典型用法示例發現看起來像這樣:
class C(object):
def __init__(self):
self.__x = None
def getx(self):
print "+++ getx()"
return self.__x
def setx(self, v):
if (v > 0):
print "+++ setx({0})".format(v)
self.__x = v
def delx(self):
print "+++ delx()"
del self.__x
x = property(getx, setx, delx, "Me property 'x'.")
在這個簡單的例子中,設定器「SETX」確保只有正值可以被分配給該屬性自.__ X。到現在爲止還挺好。但是,在查看這段代碼時,我開始想知道是否可以使用類中的屬性。例如,我不知道如果我能有下面的構造:
def __init__(self):
self.x = None
,以獲得從構造方法中權稱爲setter方法,以確保屬性自.__ X被設置爲一個有效的值。再進一步,我想知道我是否可以從班上的其他任何人那裏做同樣的事情(除了吸氣器和制動器本身之外)。如果是這樣,這是不是很好的編程習慣?如果不是,還有什麼替代方案?我對此很困惑。
謝謝!
從類內部或外部訪問屬性沒有什麼區別(並且在python解釋器中嘗試這樣做比寫這個問題花費的時間少)。如果你想知道訪問屬性或實際屬性是否更好,這可能取決於具體的用例 - 在你的例子中,用'self.x = None'替換'self .__ x = None'是沒有意義的因爲setter只將值設置爲> 0和'None> 0 == False'。 – l4mpi
感謝您的回覆。在提交問題之前,我確實嘗試了這一點,並且看到它的工作原理,但是由於我找不到這樣的代碼示例,所以我不確定這是否是好的做法和/或是否有任何我不知道的捕獲的。謝謝! –