Python子类能否存放在与其父类不同的模块中

9 投票
8 回答
9419 浏览
提问于 2025-04-17 06:53

我写了一些代码,其中有一个主类和几个子类,这些子类从一个父类那里继承了变量。

比如:

class superclass(object):
    def __init__(self, var1, var2):
        self.var1 = var1
        self.var2 = var2

class subclass1(superclass):
    def method1(self):
        pass

class subclass2(superclass):
    def method1(self):
        pass

主类没有展示,也没有展示一个选项工厂,它用来选择要调用的子类,但希望提供的信息已经足够了。

我想把这些类转换成独立的模块,这样可以被导入。预计未来还会写更多的子类,所以我在想是否可以把每个子类和父类保存为单独的模块,并且这些子类仍然能够使用父类的变量和定义。

这样做的原因是为了简化未来子类的编写。也就是说,它们可以作为独立的模块来编写,而之前的子类和父类在开发过程中不需要修改,但仍然可以使用父类的变量和定义。

我不太确定这样做是否可行,或者应该怎么做。是把所有的类保存为superclass.py、subclass1.py和subclass2.py,然后全部导入吗???

希望这样说清楚了。

谢谢。

8 个回答

2

当然,没问题。你只需要这样做:

import ModuleWithSuperclass

class subclass1(ModuleWithSuperclass.superclass):
    def method1(self):
        pass
5

是的,显然这是可能的——这就是Python的魅力所在!

模块 1

class base:
    def p(self):
        print "Hello Base"

模块 2

from module1 import base

class subclass(base):
    def pp(self):
        print "Hello child"

Python 解释器

from module2 import subclass
ob = subclass()
ob.p()
"Hello Base"
ob.pp()
"Hello child"

:)

15

是的,这完全是可能的。只要记得在子类的文件中导入父类就可以了:

from module_where_superclass_is import SuperClass

class SubClass(SuperClass):

    def method1(self):
        # ...

撰写回答