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
В настоящее время у меня есть основной файл / функция, которая создает все классы, а затем обрабатывает передачу данных между ними и их методами, по мере необходимости. Однако это кажется немного неуклюжим.
Поэтому мне интересно две вещи:
- Каков был бы самый "Pythonic" способ справиться с этим?
- Каков наилучший способ справиться с этим для производительности и использования памяти?
Мне интересно, должен ли я просто создавать экземпляры объектов одного класса внутри другого (из примера, скажем, создание объекта 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
импортировать все методы одновременно.
Надеюсь, это поможет.