Python:获取属性值

mic*_*kov 1 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)
Run Code Online (Sandbox Code Playgroud)

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

checker = VKHandshakeChecker.VKHandshakeChecker(api)
print(checker.status)
Run Code Online (Sandbox Code Playgroud)

我明白了<property object at 0x02B55450>,没有IDLE。为什么?

Mar*_*ers 5

您不能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'
Run Code Online (Sandbox Code Playgroud)

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