Python 在u_init__内定义的变量未读取

Python 在u_init__内定义的变量未读取,python,Python,我所理解的是在initmagic方法中定义变量。我读了,但下一个方法是不读它 有什么帮助吗 class Foo: var = 9 def __init__(self, a, b): self.i = a self.j = b def add(self, a, b): print a+b bar = Foo(5, 5) # create object print bar.var # access class va

我所理解的是在initmagic方法中定义变量。我读了,但下一个方法是不读它

有什么帮助吗

class Foo:

    var = 9

    def __init__(self, a, b):
        self.i = a
        self.j = b

    def add(self, a, b):
        print a+b

bar = Foo(5, 5)  # create object

print bar.var  # access class variable
o/p:

九,

为什么不打印

十,


9

您调用了变量
self.i
self.j
,而不是
a
b
,因此您需要这样引用它们<代码>添加()的定义如下:

def add(self):
    print self.i+self.j

您调用了变量
self.i
self.j
,而不是
a
b
,因此需要这样引用它们<代码>添加()的定义如下:

def add(self):
    print self.i+self.j

如果要在
add
中运行代码,必须调用它

bar = Foo(5, 5)  # create object
bar.add(5,5)
print bar.var  # access class variable

如果要在
add
中运行代码,必须调用它

bar = Foo(5, 5)  # create object
bar.add(5,5)
print bar.var  # access class variable

为什么它会打印10?你认为这是从哪里来的?为什么会打印10?你认为这是从哪里来的?但更重要的是,OP甚至没有调用
add
方法。@DanielRoseman你说得对。当我第一次阅读这个问题时,我甚至没有注意到。所有变量都需要在init方法中定义吗?但更重要的是,OP甚至没有调用
add
方法。@DanielRoseman你说得对。当我第一次阅读这个问题时,我甚至没有注意到。所有变量都需要在init方法中定义吗?所有变量都需要在init方法中定义吗?@Riomario,所有实例变量(附加到对象的变量)都需要定义。函数参数和类级变量不需要是。在:bar=Foo(5,5)上,bar是对象吗?(5,5)是实例变量,var=9类级变量?@Riomario,是的,bar是一个对象。实例变量是
self.i
self.j
。是的,
var
是一个类级变量。如果self.i和self.j是实例变量,那么a和b是什么?是否需要在init方法中定义所有变量?@Riomario,需要定义所有实例变量(附加到对象的变量)。函数参数和类级变量不需要是。在:bar=Foo(5,5)上,bar是对象吗?(5,5)是实例变量,var=9类级变量?@Riomario,是的,bar是一个对象。实例变量是
self.i
self.j
。是的,
var
是一个类级变量。如果self.i和self.j是实例变量,那么a和b是什么?