首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python :TypeError:此构造函数不带参数

Python :TypeError:此构造函数不带参数
EN

Stack Overflow用户
提问于 2014-11-19 13:01:14
回答 3查看 13.4K关注 0票数 2

当用户输入电子邮件地址,程序读取电子邮件并按照其标准(例如yeo.myy@edu.co)显示电子邮件时,如下所示:

  • usernameyeo.myy
  • domainedu.co

我知道这和"@"有关。

这是密码

代码语言:javascript
运行
复制
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()

这就是我遇到的错误:

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-19 13:03:21

代码语言:javascript
运行
复制
def __int__(self,emailAddr):

你是说__init__

代码语言:javascript
运行
复制
def __init__(self,emailAddr):

在您的方法中还缺少了几个self,并且您的return缩进不当。

代码语言:javascript
运行
复制
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]

结果:

代码语言:javascript
运行
复制
Username =  yeo.myy
Domain =  edu.co

顺便提一句,我建议使用partitionrpartition将字符串拆分为给定分隔符上的两个部分。当然比手动跟踪指数要好。

代码语言:javascript
运行
复制
def domain(self):
    return self.emailAddr.rpartition("@")[2]
def username(self):
    return self.emailAddr.rpartition("@")[0]
票数 10
EN

Stack Overflow用户

发布于 2019-09-22 03:43:15

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

票数 1
EN

Stack Overflow用户

发布于 2021-07-16 08:50:55

代码语言:javascript
运行
复制
class Employee:
    def __init__(self,Name,Age,Salary,Gender):
         self.Name = Name
         self.Age = Age
         self.Salary= Salary
         self.Gender = Gender
         
    def show_employee_deatils(self):
         print("Name of the employee is ",self.Name)
         print("Age of the employee is ",self.age)
         print("Salary of the employee is ",self.salary)
         print("gender of the employee is ",self.gender)
e1 = Employee('Shubham',25,25000,'male')
e1. show_Employee_deatils( )
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27017493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档