【问题标题】:Why does this code return a zero? [closed]为什么此代码返回零? [关闭]
【发布时间】:2016-08-24 23:40:20
【问题描述】:

以下是我编写的一些简单的 Python 2.6 代码。代码按预期工作,但我很好奇为什么输出中返回零 (0)?

非常感谢!

class One(object):
    def __init__(self):
        self.A = 0

    def Two(self, *args):
        for x in args:
            if x == 1:
                print x
        return self

    def answer(self):
        print (self.A)

ABC = One()
ABC.Two(1, 1, 9, 0, 7).answer()

输出

1
1
0
Process finished with exit code 0

【问题讨论】:

  • self.A 是 0,不是吗? answer() 正在打印 self.A
  • 因为answer() 表示要打印self.A,在__init__ 中初始化为0,并且从未改变。
  • 您是在询问退出代码 0 消息吗?
  • 你好 Barmar - 不是退出代码,我应该更清楚。我在问'1, 1, 0' 输出。也对其他所有人......为什么所有的反对票?我是一名编码初学者,这是我在堆栈溢出上发布的第一个问题。我的印象是,这是一个发布各个级别问题和答案的网站。
  • @LemonTiger 别让他们打扰你,你的问题很好,至少是mcve。到目前为止,我在这个网站上看到过比你更糟糕的问题:P

标签: python class


【解决方案1】:

如果你换个方式写,也许你会明白发生了什么:

class One(object):

    def __init__(self):
        self.A = 0

    def Two(self, *args):
        for x in args:
            if x == 1:
                print x
        return self

    def answer(self):
        print(self.A)

ABC = One()
ABC.Two(1, 1, 9, 0, 7)
print '-' * 80
ABC.answer()

如您所见,方法answer是返回零的方法,而不是方法Two

【讨论】:

  • 谢谢,我重写了,现在有意义了。
  • @LemonTiger 不客气,在 stackoverflow 中感谢某人的最佳方式是验证它对您帮助最大的答案。另外,不要被否决票所困扰......无论如何,也许这个link 会在您下次再次询问时帮助您。欢迎来到 SO
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2019-06-23
相关资源
最近更新 更多