baseclass.py文件
class baseClass(object):
def __init__(self,name= None,age= None):
self.name = name
self.age = age
print 'baseclass'
rootclass.py文件
`from baseclass import baseClass
class rootclass(baseClass):
def init(self,name,age):
baseClass.init(self, name, age)
def myage(self):
print 'my age is ' + str(self.age)`
thesubclass.py文件
import rootclass
class grandfather(rootclass.rootclass):
def __init__(self,address,work,name,age):
rootclass.rootclass.__init__(self,name,age)
self.address = address
self.myage()
verytop.py文件
`import thesubclass
class verytop:
def init(self):
b = thesubclass.grandfather(1, 2, 3, 4)`
thetest.py 文件
`while True:
aMod = __import__('verytop', None, None, [''])
CWD = os.path.dirname(os.path.realpath(__file__))
if reloadModule(CWD): //reloadMoudule函数判断CWD路径下的文件是否修改,修改返回True
print 'reload subclass'
reload(aMod)
x = getattr(aMod, 'verytop')
m = x()
time.sleep(5)`
运行thetest.py文件,并让它一直跑着。当我修改rootclass.py文件并保存以后,程序会重新加载,然后就会报错
TypeError: unbound method init() must be called with rootclass instance as first argument (got grandfather instance instead)
目前的解法是:
if reloadModule(CWD):
print 'reload subclass'
reload(aMod)
bMod = __import__('thesubclass', None, None, [''])
reload(bMod)
把子类也reload进来就正常了。
但是我的问题是,bMod必须放在aMod的后面,否则仍然会报错。但是由于我的project中,涉及到很多的类,我并不知道代码里面父类和子类的关系,所以不知道谁放前面,谁放后面。
求问应该怎么办?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.