问:具有基类

时间:2016-11-29 17:54:34

标签: python package-structuring

我想知道是否有办法做我正在尝试的事情,最好用一个例子来解释:

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())

打印"新课程"。有没有办法做到这一点?这样做真的很糟糕吗,有没有更好的方法来构建代码?

1 个答案:

答案 0 :(得分:-1)

这似乎有点令人费解。 Runner类可能是不必要的,除非你的例子中遗漏了更复杂的东西。如果您未设置覆盖原始run(),则可以使用B中的其他方法调用它。请在super()上查看this postthis 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')