0

这是我的代码

class Mine:
    def __init__(self):
        var = "Hello"
    def mfx(self):
        var += "a method is called"
        print var

    me = Mine()

当我打电话给me.mfx()它时出现以下错误

>>> me.mfx()

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    me.mfx()
  File "D:\More\Pythonnnn\text.py", line 5, in mfx
    var += "a method is called"
UnboundLocalError: local variable 'var' referenced before assignment
>>>

我只需要 var 在类内使用。所以我不想要 self.var 。为什么会这样?我怎样才能制作一个可以在课堂内随处使用的变量。我正在使用 Python2.7

4

3 回答 3

0

你应该限定 var。(self.var而不是var

class Mine:
    def __init__(self):
        self.var = "Hello"
    def mfx(self):
        self.var += "a method is called"
        print self.var

me = Mine()
me.mfx()
于 2013-07-22T05:36:05.427 回答
0

必须使用self,否则您将创建一个只能在创建它的方法内部访问的局部变量。

于 2013-07-22T05:36:39.087 回答
0

您需要使用 self 来访问实例变量。最好使用新样式类并为构造函数传入参数

class Mine(object):
    def __init__(self, var):
        self.var = var

    def mfx(self):
        self.var += "a method is called"
        print self.var

me = Mine()
me.mfx()

如果您不想每次都传递“hello”,只需创建一个默认值

def __init__(self, var="hello"):
      self.var = var
于 2013-07-22T05:57:12.800 回答