将return语句传递给类中的另一个函数

时间:2011-09-30 02:04:56

标签: python class function return

我使用以下代码将邮件从gmail帐户发送到另一个Gmail帐户:

 import smtplib

 class GmailSmpt:

    global server
    server = smtplib.SMTP('smtp.gmail.com','587')
    def __init__(self,sendfrom,sendto,usrname,pswd):
        self.sendfrom = sendfrom
        self.sendto = sendto
        self.usrname = usrname
        self.pswd = pswd
    def connect(self):
        msg = 'this is a test message'
        server.starttls()
        server.login(self.usrname,self.pswd)
        server.sendmail(self.sendfrom,self.sendto,msg)
        print ("your email has been sent")
    def quit(self):
        server.quit()



    first = GmailSmpt('sendfrom','sendto',
    'usrname','pswd')

    first.connect()
    first.quit()

我没有使用全局变量服务器,而是想在“connect”函数中使用“return server”,然后将服务器传递给“quit”函数。我怎么把它放入def退出的参数(self,?)?我通常在非面向对象程序中做的是“def quit(self,connect),但在这种情况下,我希望能够分别调用def connect()和def quit()。

谢谢!

1 个答案:

答案 0 :(得分:2)

如何使server成为GmailSmpt的每个实例的属性:

class GmailSmpt:
    def __init__(self,sendfrom,sendto,usrname,pswd):
        self.server = smtplib.SMTP('smtp.gmail.com','587')
        ...

毕竟,server.login使用self.usrnameself.pswd,因此server的相关域绑定到GmailSmpt的一个实例,所以它将server作为该实例的属性也是有意义的。

PS。如果您将server属性设为self,那么您还必须更改server - >其他方法中self.server