Как я могу вызвать метод в одном файле, который использует структуру данных, которая была изменена другим файлом? - PullRequest
0 голосов
/ 05 мая 2018

Я хотел вызвать метод в одном файле, который выбирает случайное число из списка чисел с длиной, определенной другим файлом.

Вот что у меня сейчас есть:

#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 и т. Д.]. Поэтому, когда вызывается метод make_shape (), возвращаемой формой будет форма с 0 сторонами.

Так как я могу "обновить" sideList в file2, чтобы я мог вызывать метод make_shape (), используя "обновленную" версию file2.sideList?

1 Ответ

0 голосов
/ 05 мая 2018

Не могли бы вы создать функцию в файле 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)

Edit:

 #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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...