Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法更改python 3中的类变量_Python_Python 3.x_Oop - Fatal编程技术网

方法更改python 3中的类变量

方法更改python 3中的类变量,python,python-3.x,oop,Python,Python 3.x,Oop,我试图用一个方法更改类变量: class Test(): someVar = 0 def __init__(self, val1): self.val1 = val1 def changeVar(self): Test.someVar = self.val1**2 val = 2 var1 = Test(val) print(var1.someVar) 但是,我得到“0”作为输出。不知何故,我在推理上有一个错误。将其称为Test

我试图用一个方法更改类变量:

class Test():

    someVar = 0

    def __init__(self, val1):
        self.val1 = val1

    def changeVar(self):
        Test.someVar = self.val1**2

val = 2
var1 = Test(val)

print(var1.someVar)

但是,我得到“0”作为输出。不知何故,我在推理上有一个错误。

将其称为
Test.somevar

def changeVar(self):
    Test.someVar = self.val1**2
或者,您可以将其称为
self.\uuuu class\uuuuu.x
,或者简称为
self.somevar
(当您没有任何其他同名对象变量时)


你缺少了一个
self.
self.someVar=self.val1**2@Bear Brown,我仍然得到“0”@ingenium补充了一个问题:如何初始化一个实例一个从未调用过的打印值
changeVar
Test.
vs.
self.
vs.
self.
实际上取决于您想要更改的属性的意图。这并不都是平等的。当然。。。但我回答的是这个问题的范围
class Test:

  someVar = 0

  def __init__(self, val1):
    self.someVar = val1 * 2     

val = 2

var1 = Test(val)     

print(var1.someVar)
class Test:

  someVar = 0

  def __init__(self, val1):
    self.someVar = val1
    self.changeVar()

  def changeVar(self):
    self.someVar = self.someVar * 2


val = 2

var1 = Test(val)     

print(var1.someVar)