[英]Getter and Setter for member variable in Python
我知道不建議在Python中為類成員變量編寫getter和setter方法。 仍然需要這樣做,因為我有一個復雜的對象,內部包含許多深度的對象。 我需要在容器對象中公開將獲取和/或設置內部對象成員的屬性/函數。 如何在Python中執行此操作?
def responseoperationcode(self,operationcode=None):
if operationcode:
self.innerobject.operationcode=operationcode
else:
return self.innerobject.operationcode
上面給出的函數可以充當getter和setter,但是使用它的語法會造成混淆。 我的要求是,用戶應在不使用括號的情況下獲取其值,並設置值應傳遞參數。 像這樣
objectname.responseoperationcode ##this should return the value
和
objectname.responseoperationcode("SUCCESS")##this should set the value
請提出建議。
Python支持屬性 。 您可以將代碼更改為:
@property
def responseoperationcode(self):
return self.innerobject.operationcode
@responseoperationcode.setter
def responseoperationcode(self, value):
self.innerobject.operationcode = value
現在,您可以像字段一樣使用responseoperationcode
函數,例如:
objectname.responseoperationcode # this returns the value
objectname.responseoperationcode = "SUCCESS" # this sets the value
好吧,如果您可以訪問內部對象的定義,則可以在其中編寫一個getter方法。 然后整個事情看起來像這樣:
class OuterObject:
innerObject
def getInnerField(self, field=None):
if field == None:
return self.innerObject.getField()
else:
self.innerObject.setField(field)
class InnerObject:
field
def getField(self):
return self.field
def setField(self, field):
self.field = field
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.