Python3类内的继承

Python3类内的继承,python,inheritance,nested,Python,Inheritance,Nested,我需要这样的东西 class Parent(object): class Base(object): def __init__(self, a, b): self.a = a self.b = b class Derived(Base): def __init__(self, a, b, c): super(Derived,self).__init__(a, b)

我需要这样的东西

class Parent(object): 
    class Base(object):
        def __init__(self, a, b):
            self.a = a
            self.b = b


    class Derived(Base):
        def __init__(self, a, b, c):
            super(Derived,self).__init__(a, b)
            self.c = c

        def doit():
            pass

parent = Parent()
derived = parent.Derived(x,y,z)
derived.doit()
当我尝试运行此程序时,会出现以下错误:
name错误:未定义名称“派生的”


我在
super()中尝试用“Base”代替“Derived”
-没有帮助类继承不会更改父类。在这种情况下,父类只包含原始类,而不包含派生类

您可以简单地使用猴子补丁来解决此问题

class Parent(object): 
    pass


class Base(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b


class Derived(Base):
    def __init__(self, a, b, c):
        super(Derived,self).__init__(a, b)
        self.c = c

    def doit(self):
        pass

Parent.Derived = Derived

parent = Parent()
x, y , z = 1, 1, 1
derived = parent.Derived(x,y,z)
derived.doit()

在“派生”前面加上“父项”,使其成为。正如我已经就这个问题发表了评论。这只是为了试验“派生”类。但我仍然想知道,“类派生(基):”是怎么回事(没有“父类”。“基”类的前缀)


你为什么要这么做?嵌套的意义是什么?在
Parent
中声明
Derived
是否更好?您运行的是什么python版本?使用super()还不够吗?\uuuu init\uuuu?您试图在
父类
内调用
派生的
,该类不存在,您会得到NameError。你想达到什么目的?@daniel:“派生”对象不应该没有“父”对象。一个远程类似的例子是写在纸上的“Note”,没有“paper”对象就不能存在。
class Parent(object): 
    class Base(object):
        def __init__(self, a, b):
            self.a = a
            self.b = b


    class Derived(Base):
        def __init__(self, a, b, c):
            super(Parent.Derived,self).__init__(a, b)
            self.c = c

        def doit():
            pass

parent = Parent()
derived = parent.Derived(x,y,z)
derived.doit()