首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解Python中的实例变量

问了解Python中的实例变量
EN

Stack Overflow用户
提问于 2014-12-03 09:49:34
回答 2查看 20关注 0票数 0

我对这个程序的输出有点迷惑:

代码语言:javascript
复制
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'

下面几行的输出让我感到困惑:

代码语言:javascript
复制
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,而其他两行不打印。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-12-03 15:22:10

代码语言:javascript
复制
instance = Test(3) #Output is None

这是None,因为您在分配self.a之前打印它。

代码语言:javascript
复制
print Test.a  #Output is None

这是None b,因为您在Class中打印A,而class还没有初始化,所以只处理了a= None的类定义。

代码语言:javascript
复制
print instance.a  #Output is 3. Why does this print 3?

这将打印3,因为您是在第一次调用时创建的Test类的实例上调用它的。__init__已经运行,并将self.a修改为您提供的3(它与上面的不同,因为调用了Test.a,所以不会调用__init__方法,所以您可以从类定义中获取赋值

票数 0
EN

Stack Overflow用户

发布于 2014-12-03 15:25:53

通常一个写实例是小写的(我修正了它)。

为了读取你的程序。

  • 正在输入初始化。
    • 我应该打印self.a:
      • 当前实例是否有a属性?不,

      ,

      • ,好的,看看类型,

      ,

      • ,Test通常有a属性吗?是的,这是None.
      • Ok,print None

​

代码语言:javascript
复制
- 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是“爱丽丝”,她叫什么名字?可能是“爱丽丝”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27262333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档