Python中成员变量的Getter和Setter

2024-10-03 11:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道不建议在Python中为类成员变量编写getter和setter。我仍然需要这样做,因为我有一个复杂的对象,它内部包含很多深度的对象。我需要在容器对象中公开一个属性/函数,它将获取和/或设置内部对象的成员。如何在Python中实现这一点?在

def responseoperationcode(self,operationcode=None):
    if operationcode:
        self.innerobject.operationcode=operationcode
    else:
        return self.innerobject.operationcode

上面给出的函数可以充当getter和setter,但是使用它的语法会令人困惑。我的要求是,用户应该在不使用括号的情况下获得它的值,并设置值,他应该传递参数。像这样的东西

^{pr2}$

以及

^{3}$

请提出建议。在


Tags: 对象函数selfnoneif属性def成员
2条回答

Python支持properties。您可以将代码更改为:

@property
def responseoperationcode(self):
    return self.innerobject.operationcode

@responseoperationcode.setter    
def responseoperationcode(self, value):    
    self.innerobject.operationcode = value

现在您可以像使用字段一样使用responseoperationcode函数,例如:

^{pr2}$

好吧,如果你有权访问内部对象的定义,你可以在那里写一个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

相关问题 更多 >