我对Python继承有点陌生。
我希望子类从超类继承,并且我希望超类中的方法调用子类中的方法。
在Ruby中,它可以正常工作:
class A
def foo
self.bar
end
end
class B < A
def init
foo
end
def bar
puts "I, Bar"
end
end
B.new.bar
运行此命令时,正如我预期的那样,我会看到“我,酒吧”。
但是,在Python中,我认为是等效代码的行为却很奇怪:
class A:
def foo(self):
self.bar()
class B(A):
def __init__(self):
self.foo()
def bar(self):
print "I, Bar"
B().bar()
我跑步时看到印有两次 “ I,Bar”。
如何用Python重写Ruby代码?有可能吗?如果可以,我在做什么错了?
答案 0 :(得分:1)
在Python中,只要在Ruby中创建像__init__
之类的对象,通常都会调用initialize
方法。因此,请使用其他名称重命名__init__
方法。
我认为您在Ruby代码中误输入了init
而不是initialize
。