我正在寻找一种从父类访问子类变量的方法,它是在另一个文件中实例化的。例如
在基本文件.py公司名称:
class A(object): #gets subclassed
var = 0 #place holder
def printTheVar(self):
print self.var
class B(object):
def buildAndCallA(self):
a = A()
a.printTheVar()
在实施文件.py公司名称:
^{pr2}$当我跑步时:
$ python implementationfile.py
我得到0。我想要10英镑
当父类和实现类都在同一个文件中时,这显然不是问题,但我有一个项目结构,它不要求它们:
somedir/
| basefile.py
| implementations/
| -- implementationA.py
| -- implementationB.py
| -- implementationC.py
我认为abc
模块可能会有所帮助,但我的实验证明到目前为止没有结果。在
@James的回答帮了我很多忙。为了清晰起见,这里有一个更全局化的方法,使用三个文件(这就是项目的组织方式)
在脚本.py公司名称:
在基本文件.py(注意
^{pr2}$A = cls.A
这是关键):实施1.py:
如果可能,我建议您将要使用的类传递给
buildAndCallA
方法。所以应该是这样的:然后你可以这样称呼它:
^{pr2}$然后它将使用调用时作用域中的
A
类的任何版本。在您甚至可以用一个默认参数来设置它,因此它将在默认情况下使用基本文件中的
A
版本,但您仍然可以在必要时重写它。在然后,如果不带参数调用
b.buildAndCallA()
,它将从基文件构造A
类的一个实例。在相关问题 更多 >
编程相关推荐