繁体   English   中英

更新将其作为类方法中的参数传入的实例变量

[英]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==1Instance.Avar1==0Instance.Avar2==0

另一方面,如果我将Incr方法的定义更改如下:

    def Incr(self, b):
        b +=1
        self.Avar1 +=1

我根据需要获得Instance.Avar1==1

我想使用第一种形式,以便重用该方法对具有更灵活代码的实例的不同变量应用更改; 为什么Instance.Avar1Instance.Avar1在第一种情况下不会改变它们的值?为什么Instance.Bvar与其他 2 相比可以改变它的值? 我错过了什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM