我在 athleteModel.py
脚本中用 @property
注释了方法:
@property
def get_from_store():
with open(athleteFilePath,'rb') as pickleFile:
athleteMap = pickle.load(pickleFile)
print('Loaded athleteMap ',athleteMap)
return athleteMap
我在另一个脚本中使用此方法:
from athleteModel import get_from_store
athletes = get_from_store
print(yate.u_list(athletes[athName].sortedTimes))
在最后一行(print
方法)我得到异常:
TypeError: 'function' object is not subscriptable
args = ("'function' object is not subscriptable",)
with_traceback = <built-in method with_traceback of TypeError object>
我的代码有什么问题?
最佳答案
@property
仅适用于方法,不适用于函数。
get_from_store
不是一个方法,它是一个函数。 property
对象充当 descriptor object描述符只能在类和实例的上下文中工作。
就您而言,确实没有必要将 get_from_store
设置为属性。删除 @property
装饰器并像函数一样使用它:
athletes = get_from_store()
否则您无法使顶级函数充当属性。
关于python - 如何在python 3中正确使用@property装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25462576/