1

このコードの出力が正しいのかバグなのかわかりません:

class F:
  """An abstract class"""
  list_of_secrets = []
  def __init__(self):
    pass

  def getSecret(self):
    return self.list_of_secrets

class F_None(F):
  pass

class F_Some(F):
  def __init__(self):
    self.list_of_secrets.append("secret value!")

x = F_Some()
print "x:",x.getSecret()

y = F_None()
print "y:",y.getSecret()

Python 2.7.3 を使用した出力:

x: ['secret value!']

y: ['secret value!']

出力する必要があると思います:

x: ['secret value!']

y: []

何かご意見は?

4

2 に答える 2

2

list_of_secretsここのクラスにスコープされます。self代わりににアタッチしたい__init__

  def __init__(self):
      self.list_of_secrets = []
于 2013-02-25T12:50:00.697 に答える
1

を定義することはありませんself.list_of_secrets。を定義するだけF.list_of_secretsで、これはまったく異なります。代わりにこれを行います:

class F:
  """An abstract class"""
  def __init__(self):
    self.list_of_secrets = []

  def getSecret(self):
    return self.list_of_secrets
于 2013-02-25T12:50:10.463 に答える