首页 > 解决方案 > 如何在一个文件中调用使用已被另一个文件更改的数据结构的方法?

问题描述

我想在一个文件中调用一个方法,从另一个文件定义的长度的数字列表中选择一个随机数。

这是我目前拥有的:

#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() 方法?

标签: pythonfiledata-structuresimport

解决方案


您能否在文件 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)

推荐阅读