मैं अजगर की शुरुआत कर रहा हूं और मुझे ऐसी समस्या का सामना करना पड़ा। जब मैंने अपनी खुद की कक्षा बनाने की कोशिश की, जो एक उपवर्ग है, तो मुझे ऐसी त्रुटि का सामना करना पड़ा:

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    class gender(Enum):
  File "C:\Program Files (x86)\Python365_64bit\lib\enum.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__ क्यों काम नहीं कर रहा है ....

0
Tyler Parker 16 जुलाई 2019, 03:15

1 उत्तर

सबसे बढ़िया उत्तर

आपने __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()

value में def __init__(self, value): पैरामीटर का प्रतिनिधित्व करता है,Gender.Female मैं पास हुआ।

self में def __init__(self, value):, Gender के उदाहरण को दर्शाता है।

जब मैं Gender(Gender.Female) को कॉल करता हूं, तो अजगर पर्दे के पीछे __init__(self, Gender.Female) को कॉल करता है। नया तर्क value को __init__ में जोड़ने का यही कारण है।

0
Brian 16 जुलाई 2019, 03:57