Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 缺少1个必需的位置参数:';自我';_Python - Fatal编程技术网

Python 缺少1个必需的位置参数:';自我';

Python 缺少1个必需的位置参数:';自我';,python,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("You

这是我的密码:

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)
我有一个按钮连接到电子邮件的东西。从电子邮件和一个按钮连接到电子邮件的东西。从电子邮件等

每当我按下按钮打开turtle窗口时,就会出现以下错误:

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_邮件和To_邮件等中取出自拍

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", "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_Button = Button(root, text='Enter Your Email', command=Email_Stuff.From_Email)
Email_Button.pack()
Email_Button.place(x=250,y=210)

很抱歉发了这么长的帖子

在调用方法之前,您是否创建了电子邮件的实例?因为self是调用该方法的当前对象,所以需要它

class A():
定义初始化(自我,属性):
self.attr=attr
def func(自我):
打印(self.attr)
a=a(42)
a、 func()#打印42
#或
A(32).func()#打印32

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

class F():
     def foo(self):
         return 1
>>> f=F()
>>> f.foo()
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)
我有一个连接到Email的按钮 已连接到电子邮件\u内容。从\u电子邮件等


您可能需要实例化
Email\u Stuff
的对象,然后调用
yourobject.From\u Email()
。(如果您的类
Email\u Stuff
也包含GUI按钮处理程序的内容,您可以从按钮处理程序调用
self.From\u Email()

也可以避免在函数中写入“self”,例如:

>>类F():
def foo():
返回1
>>>F.foo()
..: 1

您应该在按钮中显示导致您给出的第一个错误的相关代码。SimonT所说的绝对正确。有些人可能已经猜到了您的问题,但将来您应该实际显示您正在运行的引发异常的代码。错误消息中的差异是由使用Python 3的OP引起的,其中
F.foo
返回一个常规函数。您也可以以F().foo()的形式运行程序这是因为在Python中,函数需要()即使括号中没有提供任何参数。
>>> f=F()
>>> f.foo()
1