簡體   English   中英

Python中成員變量的Getter和Setter

[英]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.

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