python - 如何在一个文件中调用使用已被另一个文件更改的数据结构的方法?
问题描述
我想在一个文件中调用一个方法,从另一个文件定义的长度的数字列表中选择一个随机数。
这是我目前拥有的:
#file1
import file2
class Creator(object):
def make_shape():
return Shape(len(file2.sideList)) #takes a parameter of sides
shape = Creator.make_shape() #gets called after sideList is given a certain sequence
#file2
import random
sideList = []
for i in range(1, random.randint(1, 10)):
sideList.append(i)
上面代码的一个明显问题是当file2被导入时,sideList被导入为[]而不是[1,2,3,etc]。因此,当调用 make_shape() 方法时,返回的形状将是一个边数为 0 的形状。
那么我如何在 file2 中“更新”sideList,以便可以使用 file2.sideList 的“更新”版本调用 make_shape() 方法?
解决方案
您能否在文件 2 中创建一个满足您需求的函数?
#file1.py
import file2
class Creator(object):
def make_shape():
return Shape(len(file2.sideList())) #takes a parameter of sides
shape = Creator.make_shape() #gets called after sideList is given a certain sequence
#file2.py
import random
def sideList():
ret = []
for i in range(1, random.randint(1, 10)):
ret.append(i)
return(ret)
编辑:
#file2.py
import random
def sideList():
dataTarget = "__Data__.csv"
if os.path.isfile(dataTarget):
fh = open(dataTarget)
ret = fh.read().split("\n")
else:
ret = []
for i in range(1, random.randint(1, 10)):
ret.append(i)
fh = open(dataTarget)
fh.write(ret.join(\n))
fh.close()
return(ret)
推荐阅读
- shell - 如何根据某些条件使用 shell 脚本从文本文件中删除几行数据
- oauth-2.0 - 标头管理器缺少授权不记名令牌
- github - Travis-CI 不会构建新的 GitHub 存储库
- java - 从另一个 JSP 提交表单时,JSP DAO 未在 JSP 中获取对象
- fork - 你如何在不改变标准输入缓冲的情况下 fork-then-execve?
- flutter - generated_plugin_registrant.dart 中的导入不完整
- flutter - 更新时 Flutter SqfliteDatabaseException
- reactjs - 无法与 firebase 实时数据库模拟器交互
- html - 如何防止内容显示在 div 面板下
- python - Pandas:根据另一列中存在的组对一列中的所有值进行归一化,介于 0 和 10 之间