我的问题是,假设我在一个类中声明一个类,作为一种聚合:
class A:
self.foo = 20
self.bar = 30
def someFunc(self):
class B:
# some code here
BObject = B()
是否可以从B类中访问foo / bar变量?如果是,那怎么办?
我在使用wxpython时遇到了这个问题,需要在主框架类中编写一个类来处理特定的自定义对话框。
提前致谢:)
答案 0 :(得分:1)
class A(object):
foo = 20
bar = 30
def build_b(self):
class B(object):
foo = self.foo
bar = self.bar
return B()
然后你可以这样做:
>>> b_obj = A().build_b()
>>> b_obj.foo, b_obj.bar
<<< (20, 30)
但是,如果可以的话,你应该真正打破课堂B
A
,使用它的__init__
方法来初始化它......
答案 1 :(得分:0)
我建议进行以下更正:
>>> class A:
... foo=20
... bar=30
... def build_child(self):
... class B:
... def __init__(self, parent):
... self.parent = parent
... return B(self)
...
>>> a = A()
>>> b = a.build_child()
>>> b
<__main__.B object at 0x89952ac>
>>> b.parent
<__main__.A object at 0x89956ec>
这样,如果您更改了A类,则无需更新B类。