加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 缺少1个必需的位置参数:’self’

发布时间:2020-12-20 12:23:50 所属栏目:Python 来源:网络整理
导读:这是我的代码: class Email_Stuff(): def __init__(self): self.emailaddr = None self.recipaddr = None self.EmailUser = None self.EmailPass = None def From_Email(self): self.emailaddr = turtle.textinput("Your Email","What is your email addres
这是我的代码:

class Email_Stuff():
    def __init__(self):
        self.emailaddr = None
        self.recipaddr = None
        self.EmailUser = None
        self.EmailPass = None
    def From_Email(self):
        self.emailaddr = turtle.textinput("Your Email","What is your email address?")
    def To_Email(self):
        self.recipaddr = turtle.textinput("Client Email","What is your client's email address?")
    def Email_Username(self):
        self.EmailUser = turtle.textinput("Your Email Username","What is your email username?")
    def Email_Password(self):
        self.EmailPass = turtle.textinput("Your Email Password","What is your email Password?")
    def Send_Email(self):
        print (self.emailaddr) #these are here for me to see if it is the right input
        print(self.recipaddr)
        print(self.EmailUser)
        print(self.EmailPass)
        import smtplib
        server = smtplib.SMTP('smtp.gmail.com',587)
        server.login((self.EmailUser),(self.EmailPass))
        self.message = "Python Test Email"
        server.sendmail(self.emailaddr,self.recipaddr,self.message)

我有一个连接到Email_Stuff.From_Email的按钮和一个连接到Email_Stuff.From_Email等的按钮……

每当我按下按钮打开龟窗时它就会给我这个错误:

Exception in Tkinter callback
Traceback (most recent call last):
Fileline "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py",1475,in __call__
return self.func(*args)
TypeError: From_Email() missing 1 required positional argument: 'self'

但是如果我从From_Email和To_Email等中取出自我.

class Email_Stuff():
    def __init__(self):
        self.emailaddr = None
        self.recipaddr = None
        self.EmailUser = None
        self.EmailPass = None
    def From_Email():
        self.emailaddr = turtle.textinput("Your Email","What is your email address?")
    def To_Email():
        self.recipaddr = turtle.textinput("Client Email","What is your client's email address?")
    def Email_Username():
        self.EmailUser = turtle.textinput("Your Email Username","What is your email username?")
    def Email_Password():
        self.EmailPass = turtle.textinput("Your Email Password",self.message)

我收到此错误消息(这不是全部):

self.emailaddr = turtle.textinput("Your Email","What is your email address?")
    NameError: global name 'self' is not defined

这是按钮代码:

Email_Button = Button(root,text='Enter Your Email',command=Email_Stuff.From_Email)
Email_Button.pack()
Email_Button.place(x=250,y=210)

请帮忙!对不起,我很抱歉

解决方法

我认为你遇到了以下问题.如果你参加以下课程F:

class F():
     def foo(self):
         return 1

并尝试调用F.foo(),你应该得到一个类似于你所看到的错误.

>>> F.foo()
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
TypeError: unbound method foo() must be called with F instance as first argument (got nothing instead)

你需要做的是在F的一个对象上调用foo():

>>> f=F()
>>> f.foo()
1

I have a button connected to Email_Stuff.From_Email and a button
connected to Email_Stuff.From_Email etc…

您可能需要实例化Email_Stuff的对象,然后调用yourobject.From_Email(). (如果你的类Email_Stuff还包含GUI按钮处理程序的东西,你可以从按钮处理程序调用self.From_Email())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读