Oop 理解Python中的实例变量
我对这个程序的输出有点困惑:Oop 理解Python中的实例变量,oop,Oop,我对这个程序的输出有点困惑: class Test(object): a = None b = None def __init__(self, a): print self.a self.a = a self._x = 123; self.__y = 123; b = 'meow' 以下行的输出让我感到困惑: instance = Test(3) #Output is None print
class Test(object):
a = None
b = None
def __init__(self, a):
print self.a
self.a = a
self._x = 123;
self.__y = 123;
b = 'meow'
以下行的输出让我感到困惑:
instance = Test(3) #Output is None
print Test.a #Output is None
print instance.a #Output is 3. Why does this print 3?
我正在苦苦思索为什么打印实例。a打印3,而其他两行不打印
谢谢
这是无,因为您在分配前打印了self.a
print Test.a #Output is None
这是None b,因为您正在类中打印A,该类尚未初始化,因此只有A=未处理任何类定义
print instance.a #Output is 3. Why does this print 3?
这将打印3,因为您是在使用第一次调用创建的
Test
类的实例上调用它的\uuuu init\uuuuuuuuu
已经运行,并将self.a修改为您提供的3(由于调用了Test.a
,因此与上面不同,\uuuuuu init\uuuuuuuuuu
方法没有被调用,因此您可以从类定义中获得赋值通常是一个小写的写实例(我修复了它)
为了阅读你的程序
- 进入init。
- 我应该打印
:self.a
- 当前实例是否具有
属性?否a
- 好的,那么看看这些类型
是否通常具有Test
属性?是的,它是a
None
- 好的,打印
None
- 当前实例是否具有
- 将
设置为self.a
。3
- 此实例是否具有
属性?否a
- 确定创建它并给它赋值
3
- 此实例是否具有
- 我应该打印
对象的默认Test
值是多少?没有。打印它a
- 对于这个实例,
的值是多少?它是3a
print instance.a #Output is 3. Why does this print 3?