Python更改__init__中声明的变量值

时间:2015-03-06 07:50:19

标签: class python-3.x

我毫不犹豫地提出这个问题,但我的头脑似乎无法绕过class__init__()str的使用。希望有人能够耐心地回答这可能是一个非常愚蠢的问题。 我写了以下内容来测试我的理解(= 0)"

class Test():
    def __init__(self,var1,var2):
        self.__var1 = var1
        self.__var2 = var2
    def change_var1(self):
        self.__var1
        self.__var1 =2*self.__var1
        return self.__var1, self.__var2
    def change_var2(self):
        self.__var2
        self.__var2 = self.__var2*2
        return self.__var1, self.__var2
    def __repr__(self):
        return "var1 is {}, and var 2 = {}".format(self.__var1, self.__var2)

t = Test(4,"Bye")
print(t.change_var1 )  
print(t.change_var2)

我无法通过后续函数更改 init 中声明的变量。我假设我已经错误地使用了类 init ,str__。 运行我上面的内容的反应是:

<bound method Test.change_var1 of var1 is 4, and var 2 = Bye>
<bound method Test.change_var2 of var1 is 4, and var 2 = Bye>

感谢任何帮助,推送到一个能够穿过我心中的砖墙的网站!!

2 个答案:

答案 0 :(得分:0)

当您执行print(t.change_var1)时,您正在调用 change_var1 function,您只是引用它。它没有被调用,所以它实际上没有做任何事情。

要调用它,您需要附加括号:

print(t.change_var1())
print(t.change_var2())

答案 1 :(得分:0)

我猜这个问题是&#34;我做错了什么?&#34;。您的概念是正确的,但我认为Python syntax的评论是有序的。

如果您查看那里的两个示例,您会看到一个 使用括号调用 名为fib的函数,例如>>>fib(1000),但只需输入>>>fib即可引用该功能。尝试删除最后两行周围的print(),您将获得相同的结果。添加括号,你就会变成金色。