如何从函数内部的另一个函数中设置类变量?
变量py
class A:
def __init__(self):
self.a = 1
self.b = 2
self.c = 3
def seta(self):
def afunction():
self.a = 4
afunction()
def geta(self):
return self.a
运行.py
cA = A()
print cA.a
cA.seta()
print cA.a
print cA.geta()
python运行.py
1
1
1
为什么a不等于4,我怎么能让它等于4?
编辑:
谢谢大家-对不起,我刚才看到了。我不小心被一个叫阿乌的人打昏了。。。。所以我的范围其实都还可以。
在
seta
内部,定义一个函数…如果调用它,将把
self.a
设置为4。但它不在任何地方调用,因此a
保持不变。正如其他人所提到的,
afunction
永远不会被调用。你可以这样做:在这里,我们实际上调用
afunction
并显式地传递它self
,但是这是一种设置属性a
的相当愚蠢的方法——特别是当我们可以显式地执行它而不需要getter或setter时:a.a = 4
或者您可以
return
函数:然后在代码中:
问题是存在多个
self
变量。传入内部函数的参数覆盖外部函数的范围。通过从内部函数中删除
self
参数,并确保以某种方式调用该函数,可以克服此问题。相关问题 更多 >
编程相关推荐