查询从枚举继承



我是python的初学者,我遇到了这样的问题。当我尝试创建自己的类(子类(时,我遇到了这样的错误:

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    class gender(Enum):
  File "C:Program Files (x86)Python365_64bitlibenum.py", line 208, in __new__
    enum_member.__init__(*args)
TypeError: __init__() takes 1 positional argument but 2 were given

我做的课是:

class gender(Enum):
    Male = 0
    Female = 1
    def __init__(self):
        if self.value == 0:
            self.sex = 'Boy'
        else:
            self.sex = 'Girl'
    def getsex(self):
        print('This person is ',self.sex)

只是想知道为什么__init__不起作用....

您向__init__传递了错误数量的参数,有关__init__() takes 1 positional argument but 2 were given错误的信息,请参阅此帖子。

我已经像这样修改了你的代码。看看这是否适合你。

from enum import Enum
class Gender(Enum):
    Male = 0
    Female = 1
    sex = ''
    def __init__(self, value):
        if value == 0:
            self.sex = 'Boy'
        else:
            self.sex = 'Girl'
    def getsex(self):
        print('This person is ',self.sex)

# The following is how I use the class:
g = Gender(Gender.Female)
g.getsex()

def __init__(self, value): 中的value表示我传入Gender.Female参数。

def __init__(self, value): 中的self表示 Gender 的实例。

当我调用Gender(Gender.Female)时,python在幕后调用__init__(self, Gender.Female)。这就是将新参数value添加到__init__的原因。

最新更新