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()