Python:获取属性值

1 投票
1 回答
4839 浏览
提问于 2025-04-18 15:04

我有一段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 个回答

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'

我去掉了 isinstance() 这个表达式,因为它没有任何作用,因为你忽略了函数调用的返回值。

撰写回答