继承内部类Python3
问题描述:
我需要的是这样的继承内部类Python3
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()
当我尝试运行它,我得到这个以下错误:NameError: name 'Derived' is not defined
我的“衍生”的地方试图与“基地”在super()
- 没有帮助
答
前缀“衍生”与“家长”,成功了。正如我已经评论过这个问题。这只是为了试验'派生'类。但我仍然想知道'派生类(Base):'类是否正常('Base'类没有'Parent。'前缀)
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()
答
类的继承不会改变父类。在这种情况下,Parent
类只包含原始的Base
类,而不包含派生类。
您可以简单地使用猴子打补丁来解决这个问题,
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版本?超级().__ init__是不够的? – user3012759