在Python中从Enum创建字典时,'float'对象不可调用

use*_*873 1 python enums dictionary

我在Python 3.4中创建了一个Enum,其中包含一些数据和一个基于枚举返回ffactor的函数.我想从每个Enum制作一个ffactors字典.所以我尝试了这个:

class RaceType(Enum):
    GS = 0 
    SC = 1 
    CL = 2 
    @property
    def ffactor(self):
        if self is RaceType.GS:
            return 660.0
        if self is RaceType.SC or self is RaceType.CL:
            return 500.0

zeroes = {this: this.ffactor() for this in RaceType}
Run Code Online (Sandbox Code Playgroud)

但是,这引发了一个错误:

Traceback (most recent call last):
  File "parse.py", line 28, in <module>
    zeroes = {this: this.ffactor() for this in RaceType}
  File "parse.py", line 28, in <dictcomp>
    zeroes = {this: this.ffactor() for this in RaceType}
TypeError: 'float' object is not callable
Run Code Online (Sandbox Code Playgroud)

我试着手动写出我想要的东西,但仍然得到了同样的错误:

zeroes = {RaceType.GS: RaceType.GS.ffactor(),
          RaceType.SC: RaceType.SC.ffactor(),
          RaceType.CL: RaceType.CL.ffactor()}
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Ada*_*ith 5

您定义ffactor为a @property,这意味着它的作用类似于属性而不是方法.

In [4]: zeroes = {this: this.ffactor for this in RaceType}

In [5]: zeroes
Out[5]: {<RaceType.SC: 1>: 500.0,
         <RaceType.GS: 0>: 660.0,
         <RaceType.CL: 2>: 500.0}
Run Code Online (Sandbox Code Playgroud)