Есть ли способ передать объекты класса в Python между различными модулями и сохранить пространство имен? - PullRequest
1 голос
/ 03 октября 2019

Привет, ребята. У меня быстрый вопрос по поводу классификации в Python. У меня есть сценарий, который вытягивает список домов в области, собирает данные для каждого дома и сохраняет их в файл.

Для краткости в примере кода мы предполагаем, что мы уже получили data, объявив list из House объектов, а функция save_file() печатает только данные:

Файл app.py:

from save_data import save_file

class House:
    def __init__(self, year_built, sqft):
        self.year_built = year_built
        self.sqft = sqft


house_one = House('2010', '2340')
house_two = House('2014', '4340')

house_list = [house_one, house_two]

save_file(house_list)

Файл save_data.py:

def save_file(final_list):
    for house in final_list:
        print(house.year_built)
        print(house.sqft)

Это прекрасно работает, но я хочу знать, что при редактировании файла save_data.pyв моей IDE (PyCharm), когда я набираю house., он не загружает переменные класса House, потому что app.py еще не запущен. Например, если я наберу house, а затем . в файле app.py, он покажет переменные класса.

Мой настоящий класс House имеет более 25 переменных и трудно запомнить все имена, и было бы очень удобно, если бы IDE могла загружать имена, если я просто наберу house. внутри save_data.pyфайл.

Можно ли в любом случае импортировать класс House из файла app.py в файл save_data.py и / или объявить house внутри кода for house in final_list типа House, чтобы получить эту функциональность?

1 Ответ

0 голосов
/ 27 октября 2019

Это может быть достигнуто с помощью подсказок типа, упомянутых в комментариях:

from typing import List
from app import House


def save_file(final_list: List[House]):
    for house in final_list:
        print(house.year_built)
        print(house.sqft)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...