python:object()没有参数错误

时间:2019-08-28 09:03:53

标签: python python-2.7 enums

我正在尝试在python2.7中创建一个enum类。 我的代码如下:

from enum import Enum

class Alarms(Enum):
    MOTION = "Motion", 0, False
    SOUND = "Sound", 1, False
    FIRE = "Fire", 2, False


    def __new__(cls, *args, **kwds):
        obj = object.__new__(cls)
        obj.value_ = args[0]
        return obj

    def __init__(self, name, modbusAddress, isActive):
        self.name = name
        self.modbusAddress = modbusAddress
        self.isActive = isActive

这是我收到的错误消息:

  File "/usr/lib/python2.7/dist-packages/enum/__init__.py", line 232, in __new__
    enum_member._value_ = member_type(*args)
TypeError: Error when calling the metaclass bases
    object() takes no parameters

2 个答案:

答案 0 :(得分:0)

尝试以下代码段

from enum import Enum

class Alarms(Enum):
    MOTION = ("Motion", 0, False)
    SOUND = ("Sound", 1, False)
    FIRE = ("Fire", 2, False)

    def __new__(cls, *args, **kwds):
        obj = object.__new__(cls)
        obj.value_ = args[0]
        return obj

    def __init__(self, name, modbusAddress, isActive):
        self._name = name
        self._modbusAddress = modbusAddress
        self._isActive = isActive

答案 1 :(得分:0)

您的__new__中有一个错字:

obj.value_ = args[0]

应该是

obj._value_ = args[0]

(请注意下划线)

如果您确实想要value_属性,则需要同时设置两者。