使用函数调用设置实例变量的正确方法是什么

时间:2015-08-13 14:46:21

标签: python

使用仅调用外部方法的setter方法时的最佳做法是什么。我不希望用户更改此值。 我有以下结构

class Instruction(object):
    def __init__(self, address):
        super(Instruction, self).__init__()
        self.address = address
        self.mnem = self.__set_mnem()

    @property
    def mnem(self):
        return self.__mnem

    def __set_mnem(self):
        return extModule.GetMnem(self.address)

我应该有这个

    @mnem.setter
    def mnem(self, mnem=None):
        if not mnem:
            self.__mnem = extModule.GetMnem(self.address)
        else:
            self.__mnem = None

1 个答案:

答案 0 :(得分:5)

如果你的财产应该是只读的,你根本就不给它一个二传手,不。设置属性访问的私有属性:

class Instruction(object):
    def __init__(self, address):
        super(Instruction, self).__init__()
        self.address = address
        self.__mnem = extModule.GetMnem(self.address)

    @property
    def mnem(self):
        return self.__mnem

现在Instruction().mnem是只读的,并且在创建实例时会设置它的值。