类 Python3 中的继承
Inheritance inside Classes 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
我尝试用 'Base' 代替 super()
中的 'Derived' - 没有帮助
Class 继承不会改变父 class。在这种情况下,您的 Parent
class 仅包含原始 Base
class 而不是派生的 class.
你可以简单地使用猴子补丁来解决这个问题,
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()
在 'Derived' 前加上 'Parent.' 前缀,成功了。正如我已经对这个问题发表评论一样。这只是为了试验 'Derived' class。但我仍然想知道 'class Derived(Base):' 是怎样的(没有 'Base' class 的 '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()
我需要这样的东西
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
我尝试用 'Base' 代替 super()
中的 'Derived' - 没有帮助
Class 继承不会改变父 class。在这种情况下,您的 Parent
class 仅包含原始 Base
class 而不是派生的 class.
你可以简单地使用猴子补丁来解决这个问题,
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()
在 'Derived' 前加上 'Parent.' 前缀,成功了。正如我已经对这个问题发表评论一样。这只是为了试验 'Derived' class。但我仍然想知道 'class Derived(Base):' 是怎样的(没有 'Base' class 的 '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()