【发布时间】:2012-12-10 09:23:00
【问题描述】:
我有这种情况,我需要让一个嵌套类将项目附加到外部类的列表中。这是类似于我试图做的伪代码。我该如何让它发挥作用?
class Outer(object):
outerlist = []
class Inner(object):
def __call__(self, arg1):
outerlist.append(arg1)
if __name__ == "__main__":
f = Outer()
f.Inner("apple")
f.Inner("orange")
print f.outerlist()
这是我希望看到的——apple, orange
详情:
OS X、Python 2.7
【问题讨论】:
-
为什么要使用嵌套类?
-
所以我试图让 Outer 类包含将接受参数的装饰器,最好的方法是将装饰器写成类stackoverflow.com/questions/10610824/…
-
是的,使用类作为装饰器是个好主意,但这并不意味着您需要使用嵌套类。你想解决什么问题?
-
@sri:是的,装饰器应该是一个类,我同意。但是你装饰的类应该是一个完全独立的类。没有嵌套。
-
一些附带问题:我假设您想要
print f.outerlist,而不是f.outerlist(),因为您不能调用list。此外,虽然您可以通过实例访问类变量,但通过类访问它们通常不会令人困惑,例如print Outer.outerlist。 (你通过f访问它的事实意味着我不得不问:你真的想要一个类变量吗?)