【发布时间】:2019-04-24 05:59:29
【问题描述】:
我是 python 编程新手,想寻求帮助,从另一个新修改的 python 文件调用方法。
我目前有 3 个 python 文件:main.py、addBody.py 和 originalBody.py。
addBody 将在每次迭代中将一段主体添加到 originalBody.py 中。这是通过读写函数完成的。
例如,
在第一次迭代中(从 main.py 开始),originalBody.py 将如下所示:
class BODY:
def __init__(self):
object1 = send_cylinder(length = 1.0, radius = 0.1)
bodySegment = {}
bodySegment[0] = 1 #one body
在第二次迭代中,originalBody.py 将自动变为:
class BODY:
def __init__(self):
object1 = send_cylinder(length = 1.0, radius = 0.1)
object2 = send_cylinder(length = 1.0, radius = 0.1)
bodySegment = {}
bodySegment[0] = 1 #one body
bodySegment[1] = 2 #two body
当我试图从 main.py 调用类时,
main.py
from originalBody import BODY
for i in range (0,10):
fileToRead = open('addBody.py')
fileToAppend = open('originalBody.py', 'a')
...(add body from addBody.py to originalBody.py)...
fileToAppend.close()
fileToRead.close()
parent = BODY()
print(parent.bodySegment)
在第一次迭代中运行顺利:
{0: 1}
在第二次迭代中,在 originalBody.py 中添加 body 段后,预计结果会打印出来:
{0: 1, 1: 2}
但是,它会打印出第一次迭代的结果:
{0: 1}
我怀疑我的代码调用了尚未修改的原始版本 originalBody.py 中的函数。我是否需要在 main 中添加一些代码才能从 originalBody 的修改版本中获取类方法?还是修改 originalBody 后需要加入延时调用方法?
【问题讨论】:
-
看来您可能想重新加载文件?您是否研究过 imp——尤其是 load_source?
-
所以你在运行时修改了你已经加载的代码?为什么?
-
@mattsap 应该被认为是因为我想直接获取修改后的文件。我还没有研究,会尝试搜索它
-
@MisterMiyagi 我想让系统自己修改代码在每次迭代中自动添加body段
-
不清楚为什么需要修改原始类,尤其是源代码。子类化将允许表示具有不同功能的不同类,
eval将允许可重用性。目前,每次运行程序时都会添加更多的身体部位...
标签: python-3.x class methods