Python:获取属性值
我有一段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()
这个表达式,因为它没有任何作用,因为你忽略了函数调用的返回值。