在python中使用方法保留变量

时间:2011-09-16 23:55:58

标签: python variables methods save

我正在尝试让python回想起我使用我创建的'crypto'方法设置的'enstring'变量,所以我可以在'decrypto'方法中使用它。

class encryptString():
    def crypto(self, string):
        enstring = base64.b64encode(string)
        print enstring
    def decrypto(self, enstring):
        destring = base64.b64decode(enstring)
        print destring

所以,我希望'crypto'将'enstring'设置为编码字符串的变量。但是,当我在使用'crypto'方法后调用变量时,我得到“未定义的enstring”错误。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果您希望班级将enstring保存为会员,则必须将其分配给self.enstring

class encryptString():

    def __init__(self):
        self.enstring = ''
        self.destring = ''

    def crypto(self, string):
        self.enstring = base64.b64encode(string)
        print self.enstring

    def decrypto(self):
        self.destring = base64.b64decode(self.enstring)
        print self.destring

(避免使用string作为变量名。)

答案 1 :(得分:1)

两次使用self.enstring。对destring执行相同操作。不要将enstring传递给decrypto,因为它将成为self的一部分。

class encryptString():
    def crypto(self, string):
        self.enstring = base64.b64encode(string)
        print self.enstring
    def decrypto(self):
        self.destring = base64.b64decode(self.enstring)
        print self.destring

这样,enstringdestring是实例属性,因此当cryptodecrypto方法返回时,它们不会丢失。