我想知道是否有办法做我正在尝试的事情,最好用一个例子来解释:
a.py的内容:
class A(object):
def run(self):
print('Original')
class Runner(object):
def run(self):
a = A()
a.run()
b.py的内容:
import a
class A(a.A):
def run(self):
# Do something project-specific
print('new class')
class Runner(a.Runner):
def other_fcn_to_do_things(self):
pass
基本上,我有一个带有一些基类的文件,我想用它来做几个不同的项目。我希望b.Runner.run()
使用A
,中的课程b.py
,而无需覆盖run
方法。在上面的例子中,我想编码
import b
r = b.Runner()
print(r.run())
打印"新课程"。有没有办法做到这一点?这样做真的很糟糕吗,有没有更好的方法来构建代码?
答案 0 :(得分:-1)
这似乎有点令人费解。 Runner类可能是不必要的,除非你的例子中遗漏了更复杂的东西。如果您未设置覆盖原始run()
,则可以使用B中的其他方法调用它。请在super()
上查看this post和this post
做这样的事情可能更有意义:
a.py:
class A(object):
def run(self):
# stuff
print ('Original')
b.py:
import a
class B(A):
def run(self):
return super(A, self).run()
# can also do: return A.run()
def run_more(self):
super(A, self).run()
# other stuff
print('new class')