是否可以从聚合中的嵌套类访问父类的成员

时间:2011-06-02 08:22:48

标签: python class aggregation

我的问题是,假设我在一个类中声明一个类,作为一种聚合:

class A:

    self.foo = 20
    self.bar = 30

    def someFunc(self):

        class B:
            # some code here

        BObject = B()

是否可以从B类中访问foo / bar变量?如果是,那怎么办?

我在使用wxpython时遇到了这个问题,需要在主框架类中编写一个类来处理特定的自定义对话框。

提前致谢:)

2 个答案:

答案 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类。