可以将python子类存储在其超类的单独模块中

use*_*462 3 python

我编写了一些代码,其中包含从超类继承变量的main和许多子类.

例如

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
Run Code Online (Sandbox Code Playgroud)

主要没有显示,也没有用于选择要调用的子类的选项工厂,但希望给出的信息就足够了.

我希望将这些类转换为可导入的独立模块.预计将来会编写其他子类,所以我想知道是否可以将每个子类和超类保存为单独的模块,并且子类仍然可以使用/访问超类变量和定义.

这背后的原因是简化了任何未来子类的编写.这意味着它们可以作为独立模块编写,并且不必将先前的子类和超类作为开发的一部分进行处理,但是它们仍然可以使用suberclasses变量和定义.

我不确定它是如何工作的,或者它是否可以这样做.我是否只将所有类保存为superclass.py,subclass1.py和subclass2.py并将它们全部导入?????

希望有道理.

谢谢.

jul*_*ria 10

是的,它完全有可能.只是不要忘记在子类文件中导入超类:

from module_where_superclass_is import SuperClass

class SubClass(SuperClass):

    def method1(self):
        # ...
Run Code Online (Sandbox Code Playgroud)


Yug*_*dle 5

是的,显然这是可能的 - 这就是 python 的美妙之处!

模块一

class base:
    def p(self):
        print "Hello Base"
Run Code Online (Sandbox Code Playgroud)

模块 2

from module1 import base

class subclass(base):
    def pp(self):
        print "Hello child"
Run Code Online (Sandbox Code Playgroud)

蟒蛇壳

from module2 import subclass
ob = subclass()
ob.p()
"Hello Base"
ob.pp()
"Hello child"
Run Code Online (Sandbox Code Playgroud)

:)