def method(self, *args):
def function(*args):
#can this access all method's variables, data, etc.
質問する
67 次
1 に答える
1
はい、できます。Pythonは変数を見つける際に、次のルックアップルールに従うためです。
LEGB:
L:local
E:enclosing
G:global
B:built-in
だから、あなたの場合はE
:
python 2.x:
Python 2.xでは、funcでこれらの変数を変更することはできません
class A:
def meth(self):
foo=1
bar=2
def func():
foo=2 # if you place this statement below the print statement then you'll get
# UnboundLocalError: local variable 'foo' referenced before assignment
print foo,bar
func()
print (foo) #meth's foo is unchanged
a=A()
a.meth()
出力:
2 2
1
python 3.x:nonlocal
変数を変更するためにも使用します:
class A:
def meth(self):
foo=1
bar=2
def func():
nonlocal foo,bar
print (foo,bar)
foo=2 #changes meth's foo to 2
func()
print (foo)
a=A()
a.meth()
出力:
1 2
2
于 2012-10-20T06:52:51.617 に答える