我经常遇到这个错误,所以我想举个例子:
class Me():
def __init__(self,name):
self.name=name
def call():
myname=Me("Alex")
printIt()
def printIt():
print(myname.name)
call()
为什么我收到此错误而不是打印“Alex”?提前致谢
答案 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。