0
它與Python類的工作,而這是完全可能與getMyAttr()
和的方法來獲取相同的功能,而不是聲明類屬性/變量的多次出現,如self.myVariable
Python:類屬性VS Getters和Setters?
我OOP的工作越多,我越趨向使用類方法來獲取和設置屬性。 我想知道我正在採取的方向是否正確,如果我不會後悔10K行代碼。請指教!
它與Python類的工作,而這是完全可能與getMyAttr()
和的方法來獲取相同的功能,而不是聲明類屬性/變量的多次出現,如self.myVariable
Python:類屬性VS Getters和Setters?
我OOP的工作越多,我越趨向使用類方法來獲取和設置屬性。 我想知道我正在採取的方向是否正確,如果我不會後悔10K行代碼。請指教!
你在想在正確的方向,但你應該尋找的Python properties
做你正在做的事情:
class Foo():
def __init__(self, x):
self.__x = x
@property
def x(self):
return self.__x
@x.setter
def set_x(self, value):
if(value < 0):
self.__x = value
其中,你可以窩「設置」邏輯和「得到」的邏輯(如果您正在更改如何呈現它)。這會讓您從類中調用值x
,就好像您在訪問屬性一樣。
foo = Foo(-4)
foo.x
>>> -4
foo.x = 3
foo.x
>>> -4
foo.x = -12
foo.x
>>> -12
爲什麼要使用getters/setters而不是直接訪問屬性? – BrenBarn
根據具體情況,您應該使用直接訪問和「@屬性」的混合模式。由於某種原因,它們在語法上可以互換。 – roippi