NameError:名称'myname'未在Python中定义

时间:2017-12-18 02:21:57

标签: python object

我经常遇到这个错误,所以我想举个例子:

class Me():
  def __init__(self,name):
    self.name=name

def call():
  myname=Me("Alex")
  printIt()

def printIt():
  print(myname.name)

call()

为什么我收到此错误而不是打印“Alex”?提前致谢

3 个答案:

答案 0 :(得分:0)

块中定义的变量具有块范围,这意味着它们从外部不可见。 myname功能call,仅在call中可见 如果我们遵循你的风格

myname = None

def call():
  global myname      
  myname = Me("Alex")
  printIt()

def printIt():       # now we could access myname 
  print(myname.name)

但是,更好的选择是使用

来避免不必要的全局变量
def call():     
  myname = Me("Alex")
  printIt(myname)

def printIt(somebody):       # now we could access aPerson as well 
  print(somebody.name)

答案 1 :(得分:0)

myname是一个局部变量,只能在定义它的函数内使用。

尝试将其作为参数传递:

def call():
    myname = Me("Alex")
    printIt(myname)

def printIt(myname):
    print(myname.name)

答案 2 :(得分:0)

myname不是全局变量。它不在printIt方法的范围内。它是调用方法的本地方法。如果要访问它,请以全局方式声明它或将myname对象作为参数传递给printIt。