繁体   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