如果我有两个子类都继承自同一个父类
class Parent(object):
def __init__(self):
self.name = 'parent'
self.position = 0
class FirstChild(Parent):
def __init__(self):
self.speed = 1
class SecondChild(Parent):
def __init__(self):
self.final = 100
def remaining_distance(self):
print('Remaining distance is %i.' %(self.final - self.position)
现在我从FirstChild定义一个实例。
Child1 = FirstChild()
我想在Child1上使用SecondChild中的方法。我该怎么办? 我知道
SecondChild.remaining_distance(Child1)
会给我一条错误信息。是否有任何代码无误地达到了预期的效果?
谢谢:)
答案 0 :(得分:1)
创建子类时,实例也是父类的实例 例如在文件中:
class Foo(object):
def __init__(self):
print "foo init"
class Bar(object):
def __init__(self):
print "bar init"
class FooBar(Foo, Bar):
def __init__(self):
print "foobar init"
super(FooBar, self).__init__()
a = FooBar()
<强>输出:强>
foobar init
foo init
但这并不意味着Bar类不会被继承。最终FooBar类的实例也是Bar类和Foo类的实例。
print isinstance(a,FooBar)
print isinstance(a,Foo)
print isinstance(a,Bar)
<强>输出强>
True
True
True
在您的示例中,First和Second子节点都具有相同的父类,但是它们只能共享父类变量或方法,因为它们都共享父类范围,两个子节点都不能共享它们自己的方法或变量,因为他们没有分享他们的范围