Python 嵌套类-如何使用父类中的函数?

Python 嵌套类-如何使用父类中的函数?,python,python-2.7,class,oop,inner-classes,Python,Python 2.7,Class,Oop,Inner Classes,如果我遇到这种情况: class Foo(object): def __init__(self): self.bar = Bar() def do_something(self): print 'doing something' class Bar(object): def __init(self): self.a = 'a' def some_function(self):

如果我遇到这种情况:

class Foo(object):
    def __init__(self):
        self.bar = Bar()

    def do_something(self):
        print 'doing something'

    class Bar(object):
        def __init(self):
            self.a = 'a'

        def some_function(self):
我想在某个函数中调用do_something函数,但该函数不属于该类,我该如何调用该函数? 我不想和Foo()一起使用它。做点什么,还有其他选择吗? 我不想创建新实例

另一个例子:

class A(object):
    def __init__(self):
        self.content = 'abcdabcabcabc'
        self.b = self.B()
        self.c = self.C()    

    def some_function(self):
        print self.content

    class B(object):
        def foo(self):
            A.some_function()

    class C(object):
        def foo(self):
            A.some_function()

Python中的嵌套类没有实际的用例,但用于使用名称空间限定某些类属性的范围。在这种情况下,您根本不应该创建它们的实例

如果你有嵌套类的实例,你所得到的只是一个头疼的问题——没有benneffit。“Outter”类不会把它们看作是任何特殊的东西,这与C++中的不同,从这个模式看来,嵌套类在容器容器中是私有的。 Python中私有的概念完全是按照惯例来实现的,如果除了
Foo
之外没有其他代码应该使用
Bar
的实例,那么在文档中通过调用
\u Bar
来表示

除此之外,嵌套将无助于
Bar
通过其名称以外的任何其他方式获取对
Foo
的引用(好的,有一些方法使用描述符协议,但并不适用于此)-如果您想在没有
Foo
实例的情况下运行Foo.do\u something,无论如何,
dou\u something
应该是一个classmethod

现在,如果您想拥有聚合对象,那是另一回事。你要做的是:

class Bar(object):
    def __init(self, parent):
        self.parent = parent
        self.a = 'a'

    def some_function(self):
        self.parent.do_something(...)

class Foo(object):
    def __init__(self):
        self.bar = Bar(self)

    def do_something(self):
        print 'doing something'

Foo
不是
Bar
的“父项”。Python中的嵌套类除了一个额外的作用域外,并不能真正为您带来任何好处。如果您不想将其作为实例方法调用,那么就不要将其作为实例方法。我用另一个示例编辑我的问题,什么是做这件事的最佳方法?您不应该使用嵌套类开始,我在这里放了一个s: