Python:获取属性的价值

时间:2014-07-28 15:59:53

标签: python properties

我有这个Python 2代码:

class VKHandshakeChecker:

    def __getAnswers(self):
        return self.__answers

    def __getStatus(self):
        return self.__status    

    def __init__(self,vkapi,maxDepth=6):
        isinstance(vkapi,VKApi.VKApi)
        self.vkapi = vkapi
        self.__maxDepth=maxDepth
        self.__answers = list()
        self.__status = 'IDLE'
        self.status = property(VKHandshakeChecker.__getStatus)
        self.answers = property(VKHandshakeChecker.__getAnswers)

我想获得answers财产。但是当我执行这段代码时:

checker = VKHandshakeChecker.VKHandshakeChecker(api)
print(checker.status)

我得到<property object at 0x02B55450>,而不是IDLE。为什么呢?

1 个答案:

答案 0 :(得分:4)

您不能在实例上放置描述符(如property对象)。你在课堂上使用它们。

只需使用property作为装饰者:

class VKHandshakeChecker:
    @property
    def answers(self):
        return self.__answers

    @property
    def status(self):
        return self.__status    

    def __init__(self,vkapi,maxDepth=6):
        self.vkapi = vkapi
        self.__maxDepth=maxDepth
        self.__answers = list()
        self.__status = 'IDLE'

我删除了isinstance()表达式,它没有做任何事情,因为你忽略了函数调用的返回值。