Python - Как мне вызвать метод класса из другого недавно модифицированного файла Python - PullRequest
0 голосов
/ 21 ноября 2018

Я новичок в программировании на 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, предположительно ожидается вывод результата:

{0: 1, 1: 2}

Однако он выводит результат первой итерации:

{0: 1}

Я подозреваю, что мой код вызывает функцию из исходной версии originalBody.py, которая еще не была изменена.Нужно ли мне добавить какой-нибудь код в main, чтобы получить метод класса из модифицированной версии originalBody?Или мне нужно добавить задержку для вызова метода сразу после модификации originalBody?

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете перезагрузить модуль, когда он уже был импортирован, используя встроенную функцию reload .

Я редактировал ваш код, используя import originalBody, потому что я не уверен, как работает функция перезагрузки с синтаксисом from x import y.

Код ниже:

from importlib import reload
import originalBody

for i in range (0,10):
    reload(originalBody)

    fileToRead = open('addBody.py')
    fileToAppend = open('originalBody.py', 'a')
    ...(add body from addBody.py to originalBody.py)...
    fileToAppend.close()
    fileToRead.close()

    parent = originalBody.BODY()
    print(parent.bodySegment)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...