跨文件的类继承

Kas*_*eth 5 python class

我正在努力处理多个文件中继承类的一些定义。

我搜索了很长时间,找到了一些例子,但没有一个能解决我的问题。

让我们深入研究一个例子:

文件1.py:

from file2 import SubClass

class MainClass:
  def __init__(self):
    print("This is MainClass")

mc = MainClass()
mc.SaySomething()
Run Code Online (Sandbox Code Playgroud)

文件2.py:

from file1 import MainClass

class SubClass(MainClass):
  def SaySomething(self):
    print("This is the subclass")
Run Code Online (Sandbox Code Playgroud)

我的目标是将一个巨大的类分成多个文件,每个文件包含一些相关的函数。

我尝试了很多不同的组合,但总是出错——当我改变某些东西时当然会有所不同,但结果是相同的;它不起作用。

我想这与我尝试将每个文件导入彼此的方式有关,但我还没有弄清楚如何做到这一点,所以我希望有人可以解决它,并向我解释一下。

实际上第三个文件将导入主类并执行它。我想该文件只需要导入 file1.py,因为它将导入 file2 - 否则请纠正我。

好的,这是第一部分。然而,我也很好奇是否有一种方法可以在对象中创建一些多个嵌套模块/函数 - 为了结构的缘故。

我很确定一个例子会更好地解释它。我可以做一些类似的东西:

mc = MainClass()
mc.SubClass.SaySomething()
Run Code Online (Sandbox Code Playgroud)

...而不只是mc.SaySomething()?我认为这样我可以保持更好的代码结构。

Jos*_*e J -1

我明白你想做的事,你不应该做。

也许你想做多重继承,希望你通过下面的例子来理解:

class A:
    def __init__(self, number):
        self.number = number

    def increase(self):
        self.number += 1

class B:
    def __init__(self, number):
        self.number = number

    def decrease(self):
        self.number -= 1

class AB(A, B):
    def __init__(self, number):
        self.number = number

ab = AB(10)
ab.increase()
print ab.number
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以将类拆分为不同的文件,然后创建一个 MainClass,但我认为这不是最好的方法。