我有这个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
。为什么呢?
答案 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()
表达式,它没有做任何事情,因为你忽略了函数调用的返回值。