我正在尝试在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
答案 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_
属性,则需要同时设置两者。