我不确定此代码的输出是否正确或是否有错误:
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: []
有什么想法吗?
答案 0 :(得分:2)
list_of_secrets
的范围是这里的类。您希望将其附加到self
__init__
def __init__(self):
self.list_of_secrets = []
答案 1 :(得分: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