我对这个程序的输出感到有些困惑:
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?
我正在努力解决为什么print Instance.a
打印3而其他两行不打印。
由于
答案 0 :(得分:0)
instance = Test(3) #Output is None
这是“无”,因为您在分配之前打印self.a
。
print Test.a #Output is None
这是None b,因为您在Class中打印A,但尚未初始化,因此只处理了a = None类定义。
print instance.a #Output is 3. Why does this print 3?
这会打印3,因为您在第一次调用时创建的Test
类的实例上调用它。已经运行了__init__
,并将self.a修改为您提供的3(由于调用Test.a
后它与上面不同,因此未调用__init__
方法,因此您获得你从班级定义中的作业
答案 1 :(得分:0)
通常一个写实例小写(我修复它)。
为了阅读你的节目。
self.a
:
a
属性?号Test
通常是否具有a
属性?是的,它是None
。None
self.a
设为3
。
a
属性?号3
。a
对象的默认Test
值是多少?它没有。打印出来。a
值是多少?它的3。举个更人性的例子。
通常,未命名的人名为John Doe。
有人昏迷不醒,早上8点进入医院。他的名字是什么? (不知道,让我们写下#34; John Doe")
8岁进入的人的姓名是什么? " John Doe"
他醒了,嘿,你的名字是什么?我Bob
。
8岁进入的人的姓名是什么? "鲍勃"
当有人昏迷进入医院时,他的名字是什么? " John Doe" (没有变成" Bob")
如果另一名患者进入并且她的身份证是#34; Alice",她的名字是什么?可能" Alice"