我对这个程序的输出有点迷惑:
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,而其他两行不打印。
谢谢
发布于 2014-12-03 15:22:10
instance = Test(3) #Output is None这是None,因为您在分配self.a之前打印它。
print Test.a #Output is None这是None b,因为您在Class中打印A,而class还没有初始化,所以只处理了a= None的类定义。
print instance.a #Output is 3. Why does this print 3?这将打印3,因为您是在第一次调用时创建的Test类的实例上调用它的。__init__已经运行,并将self.a修改为您提供的3(它与上面的不同,因为调用了Test.a,所以不会调用__init__方法,所以您可以从类定义中获取赋值
发布于 2014-12-03 15:25:53
通常一个写实例是小写的(我修正了它)。
为了读取你的程序。
self.a:a属性?不,,
,
Test通常有a属性吗?是的,这是None.None
- set `self.a` to `3`.
- Does this instance have `a` attribute? no.
- ok create it and give it the value `3`.
Test对象的默认a值是多少?什么都没有。打印出来。a的值是多少?是3.举一个更人性化的例子。
通常不知名的人都叫无名氏。
有人在早上8点不省人事地进入医院。他的名字是什么?(不知道,让我们写“无名氏”吧)
8点入场的人叫什么名字?“无名氏”
他醒了,嘿,你叫什么名字?我是Bob。
8点入场的人叫什么名字?“鲍勃”
当一个昏迷的人进入医院时,他叫什么名字?“无名氏”(没有改成“鲍勃”)
如果另一个病人进来,她的Id是“爱丽丝”,她叫什么名字?可能是“爱丽丝”
https://stackoverflow.com/questions/27262333
复制相似问题