Python объекты в других классах или отдельные?

У меня есть приложение, над которым я работаю в Python 2.7, в котором есть несколько классов, которые должны взаимодействовать друг с другом, прежде чем вернуть все обратно в основную программу для вывода.

Итак, краткий пример кода:

class foo_network():
    """Handles all network functionality"""
    def net_connect(self, network):
       """Connects to the network destination"""
       pass

class foo_fileparsing():
    """Handles all sanitation, formatting, and parsing on received file"""
    def file_check(self, file):
        """checks file for potential problems"""
        pass

В настоящее время у меня есть основной файл / функция, которая создает все классы, а затем обрабатывает передачу данных между ними и их методами, по мере необходимости. Однако это кажется немного неуклюжим.

Поэтому мне интересно две вещи:

  1. Каков был бы самый "Pythonic" способ справиться с этим?
  2. Каков наилучший способ справиться с этим для производительности и использования памяти?

Мне интересно, должен ли я просто создавать экземпляры объектов одного класса внутри другого (из примера, скажем, создание объекта foo_fileparsing в классе foo_network, если это единственный класс, который будет его вызывать, а не мой нынешний подход возврата всего к основной функции и передачи его между объектами таким образом.

К сожалению, я не могу найти PEP или другой ресурс, который, кажется, решает эту ситуацию.

1 ответ

Вы можете использовать модули. И иметь каждый класс в одном модуле. и затем вы можете использовать импорт, чтобы импортировать только определенный метод из этого класса. И все, что вам нужно для этого сделать, - это создать каталог с именем, совпадающим с именем вашего класса, и поместить файл init.py в этот каталог, который говорит Python рассматривать этот каталог как модуль. тогда для бывших Папка foo_network содержит файл с именем foo_network.py и файл init.py. и в foo_network.py код

class foo_network():
    """Handles all network functionality"""
    def net_connect(self, network):
       """Connects to the network destination"""
       pass

и в любом другом файле вы можете просто использовать

import net_connect from foo_network

он будет импортировать только этот конкретный метод. Таким образом, ваш код не будет выглядеть беспорядочным, и вы сможете импортировать только то, что требуется. Вы также можете сделать

import * from foo_network 

импортировать все методы одновременно.

Надеюсь, это поможет.

Другие вопросы по тегам