python - 如何在python 3中正确使用@property装饰器?

标签 python python-3.x properties decorator python-decorators

我在 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/

相关文章:

java - 如何在 Spring 上下文文件中使用带有属性文件的环境变量

python - 用python粘贴到excel

python - 检测并发中失败的任务。futures

python - 在python中将列表的字符串列表转换为整数

class - 有2个参数的Property Let有什么问题?

C# 获取/设置语法用法

Python 模块 Mahotas 阈值问题

python - 使用棉花糖按字母顺序对字段值进行排序

python - matplotlib 如何知道要在此代码中显示什么?

python - 正则表达式匹配 Unicode 变量名称