可以在Python中执行此操作吗?

时间:2011-07-26 21:22:59

标签: python

我是Python的新手,我不确定是否可以这样做。如你所见,我甚至无法找到问题的好标题。假设我有2个班级,

class A:
    self.B = None

class B:
    def c(self):
        pass

    def d(self):
        pass

现在,如果我创建一个类的实例,

a = A()
a.b = B()

我想要类似的东西,

print a.c()

这应该在内部调用:

a.b.c()

3 个答案:

答案 0 :(得分:2)

A.__getattr__()抓住对a.c的访问权限并让其返回a.b.c

答案 1 :(得分:1)

为什么你希望它能像那样工作?如果它被理解为具有B的方法,则从B继承。

答案 2 :(得分:1)

class A:
    self.B = None

这不会编译。自我指的是什么?也许你的意思是以下几点?

class A:
    def __init__(self):
        self.b = None

a = A()
a.b = B()

正如@Ignacio所说,使用 getattr 或从B继承A,如下所示:

class A(B):
    ...