我是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__
的原因。