【问题标题】:What makes this output change?是什么让这个输出发生变化?
【发布时间】:2018-03-16 20:58:16
【问题描述】:

我不明白以下代码的输出会发生什么变化:

class Friend:
   def __init__(self, name):
      self.name = name
      print(name + " friend")

   def getname(self):
      return self.name

   def removefriend(self):
      print(self.name + " no friend")
      self.name += " (removed))

第一个任务:

paul = Friend("Paul")
paul.removefriend()
print(paul.getname())
// Output: Paul friend, Paul no friend, Paul (removed)

第二个任务:

paul = Friend("Paul")
print(paul.getname())
// This actually prints: Paul friend, Paul

我不明白是什么让简单的输出Paul 在第一个任务中消失了? removefriendgetname 方法有何影响?

【问题讨论】:

    标签: python output


    【解决方案1】:

    您已经实现了一个名为 removefriend 的方法,并在您的任务 1 中使用它。当您使用以下函数 removefriend() 时,它会删除您的朋友。

    【讨论】:

    • 我知道,但我不删除对象 Paul? removefriend() 方法只是打印出一些东西?为什么我删除了 Paul 的名字还是打印不出来?
    • @JushKillaB 这部分显式更改了名称:self.name += "(已删除))。它不仅仅是打印。
    • 正如@JushKillaB 提到的,一旦您使用该行,您将添加 ((removed)) 到名称。所以它改变了名字。
    • 我也明白这一点。但是当我调用 getname() 时,为什么它不打印“Paul(removed))”,因为新名称是 self.name+="(removed)"?
    • 嗯,它确实会使用您的 getName 函数打印“Paul(removed))”。
    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多