【问题标题】:Why not in a dictionary of boolens is understood as a function call?为什么不在布尔字典中理解为函数调用?
【发布时间】:2021-07-01 00:49:14
【问题描述】:

我有以下

class ShowOptions(Enum):
    MenuBBoxes =0
    Show_A = 1
    Show_B =2
    Show_C =3
    Show_D =4

isShown = { ShowOptions.MenuBBoxes: True,
            ShowOptions.Show_A: True,
            ShowOptions.Show_B:True,
            ShowOptions.Show_C:True,
            ShowOptions.Show_D:True}

我正在尝试切换布尔值,例如

isShown[(h-1)]= not   isShown[(h-1)]

但这给了我错误

TypeError: 'NoneType' object is not callable

不明白为什么不能用。 注意:如果我这样做了

  isShown[(h-1)]= not (1==0)

没有问题

【问题讨论】:

  • 发布运行并在运行时重现错误的内容。您发布的代码与您询问的错误有完全不同的问题。
  • 如果我尝试实现您在此处所说的内容,则效果很好。但是你的代码目前还没有直接运行,所以投票失败。
  • 你能定义h吗?
  • @HenryEcker h 是一个整数

标签: python dictionary boolean


【解决方案1】:

dict 的键是 Enum 而不是 int。您不能互换使用它们。如果您想从dict 访问某些内容,您需要使用Enum 定义,例如:

from enum import Enum


class ShowOptions(Enum):
    MenuBBoxes = 0
    Show_A = 1
    Show_B = 2
    Show_C = 3
    Show_D = 4


isShown = {ShowOptions.MenuBBoxes: True,
           ShowOptions.Show_A: True,
           ShowOptions.Show_B: True,
           ShowOptions.Show_C: True,
           ShowOptions.Show_D: True}


isShown[ShowOptions.MenuBBoxes] = not isShown[ShowOptions.MenuBBoxes]
print(isShown)

如果你想使用它们的值,你必须像这样调用你的 Enum 类型:

isShown[ShowOptions(0)] = not isShown[ShowOptions(0)]
print(isShown)

我认为您正在寻找类似的东西:

isShown[ShowOptions(h - 1)] = not isShown[ShowOptions(h - 1)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2019-08-14
    相关资源
    最近更新 更多