[英]Update an instance variable passing it in as an argument in a class method
我想要一个方法来改变实例变量的值而不让它们显式出现在方法中(但将它们作为参数传递)
考虑以下情况:
class B:
def __init__(self):
Bvar = 0
class A:
def __init__(self):
self.Sup = B()
def A_var_reset(self):
self.Avar1 = 0
self.Avar2 = 0
def Incr(self, a, b):
b +=1
a +=1
Instance = A()
for i in range(0, N):
Instance.A_var_reset()
Instance.Incr( Instance.Avar1, Instance.Bvar)
Instance.Incr( Instance.Avar2, Instance.Bvar)
print(Instance.Avar1, Instance.Bvar)
打印显示Instance.Bvar==1
而Instance.Avar1==0
和Instance.Avar2==0
另一方面,如果我将Incr
方法的定义更改如下:
def Incr(self, b):
b +=1
self.Avar1 +=1
我根据需要获得Instance.Avar1==1
。
我想使用第一种形式,以便重用该方法对具有更灵活代码的实例的不同变量应用更改; 为什么Instance.Avar1
和Instance.Avar1
在第一种情况下不会改变它们的值?为什么Instance.Bvar
与其他 2 相比可以改变它的值? 我错过了什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.