简体   繁体   English

python:object()没有参数错误

[英]python: object() takes no parameters error

I'm trying to create an enum class in python2.7. 我正在尝试在python2.7中创建一个enum类。 My code looks like this: 我的代码如下所示:

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

This is the error message I get: 这是我收到的错误消息:

  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

Try the below snippet 试试下面的代码片段

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

You have a typo in your __new__ : 您的__new__有错别字:

obj.value_ = args[0]

should be 应该

obj._value_ = args[0]

(notice the leading underscore) (请注意下划线)

If you do want a value_ attribute, then you need to set both. 如果确实需要value_属性,则需要同时设置两者。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM