Python:TypeError:此构造函数不接受参数

2024-09-28 20:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

当用户输入电子邮件地址时,程序将读取电子邮件并根据其条件(例如yeo.myy@edu.co)显示它,如条件:

  • usernameyeo.myy
  • domainedu.co

我知道这和"@"有关。

这是密码

class Email:
    def __int__(self,emailAddr):
        self.emailAddr = emailAddr


    def domain(self):
        index = 0
        for i in range(len(emailAddr)):
            if emailAddr[i] == "@":
                index = i
            return self.emailAddr[index+1:]

    def username(self):
        index = 0
        for i in range(len(emailAddr)):
            if emailAddr[i] == "@" :
                index = i
            return self.emailAddr[:index]

def main():

    emailAddr = raw_input("Enter your email>>")

    user = Email(emailAddr)

    print "Username = ", user.username()
    print "Domain = ", user.domain()

main()

这是我得到的错误:

Traceback (most recent call last):
  File "C:/Users/Owner/Desktop/sdsd", line 29, in <module>
    main()
  File "C:/Users/Owner/Desktop/sdsd", line 24, in main
    user = Email(emailAddr)
TypeError: this constructor takes no arguments

Tags: inselfindexmain电子邮件emaildomaindef
2条回答
def __int__(self,emailAddr):

你是说__init__

def __init__(self,emailAddr):

您的方法中还缺少几个self,并且return缩进不正确。

def domain(self):
    index = 0
    for i in range(len(self.emailAddr)):
        if self.emailAddr[i] == "@":
            index = i
            return self.emailAddr[index+1:]

def username(self):
    index = 0
    for i in range(len(self.emailAddr)):
        if self.emailAddr[i] == "@" :
            index = i
            return self.emailAddr[:index]

结果:

Username =  yeo.myy
Domain =  edu.co

顺便说一下,我建议^{}^{}在给定的分隔符上将字符串分成两部分。当然比手动跟踪索引要好。

def domain(self):
    return self.emailAddr.rpartition("@")[2]
def username(self):
    return self.emailAddr.rpartition("@")[0]

如果在init之前和之后键入带有单下划线的def _init_,而不是带有双下划线的def __init__,则可能会发生此错误。

相关问题 更多 >