NameError: class Me(): def __init__(self,name): self.name=name def call(): myname=Me("Alex") printIt() def printIt(): print(myname.name) call()
class Me(): def __init__(self,name): self.name=name def call(): myname=Me("Alex") printIt() def printIt(): print(myname.name) call()
为什么我收到的不是打印这个错误“亚历克斯:名称“MYNAME”是不是在Python
为什么我收到的不是打印这个错误“亚历克斯:名称“MYNAME”是不是在Python" src="/default/index/img?u=aHR0cHM6Ly9wMC5waXFzZWxzLmNvbS9wcmV2aWV3Lzk1NC8yNjUvMjc1L3VuaXRlZC1zdGF0ZXMtc2FuLWZyYW5jaXNjby1taWxlLXJvY2stYmVhY2gtbGFuZHMtZW5kLmpwZw==&w=245&h=&w=700"/>
块中定义的变量具有块范围,这意味着它们从外部不可见。 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)
myname
是只能内部功能它的定义,其中使用的局部变量,以避免不必要的全局变量。
尝试把它作为参数:
def call():
myname = Me("Alex")
printIt(myname)
def printIt(myname):
print(myname.name)
完美无瑕,谢谢!这确实很有意义。 –
MYNAME不是一个全局变量。它不在printIt方法的范围内。它是本地的呼叫方法。如果你想访问它,以全局的方式声明它,或者将myname对象作为参数传递给printIt。
谢谢大家的意见!我现在明白了。特别是这个完美的考虑我的风格。 –