0
class A():
    class B():
       def Foo(self):
           print "Hello"
    class C():
       def Bar(self):
           print "Goodbye"
    def name(self):
        print "FooBar"

我想要做的是,在 Bar 函数中调用 Foo 函数。我该怎么做?

4

2 回答 2

2

在 Python 中,内部类没有与之关联的外部类的隐式实例。如果没有这样的实例,您将无法从或调用A的非静态方法。BC

如果您确实有这样的实例,那么只需使用点表示法:

class C():
   def Bar(self):
       self.a.name()
   ...

(哪里self.a是 的一个实例A。)

或者,如果A.name()可以设为静态,则以下内容也将起作用:

class A(object):

    class C():
       def Bar(self):
           print "Goodbye"
           A.name()

    @staticmethod
    def name():
        print "FooBar"

A.C().Bar()
于 2012-05-16T16:11:40.910 回答
0

您需要一个类的实例A来调用方法。

于 2012-05-16T16:09:21.420 回答