Где выявить тип данных в Python factory - PullRequest
0 голосов
/ 18 октября 2019

скажем, нам нужно написать API, который извлекает данные из основных функций. Я покажу, что я имею в виду под упрощенной версией функциональности ядра:

def type_of_data(url):
    # do something_with_url and return type


class Abstract:

    @abc.abstractmethod
    def load(self, data_url):
        raise NotImplementedError("implement")


class LoadInt(Abstract):

    def load(self, data_url):
        return int(data_url)


class LoadString(Abstract):

    def load(self, data_url):
        return str(data_url)


def loader_factory(data_url):

    if type_of_data(data_url) == "str":
        return LoadString()
    elif type_of_data(data_url) == "int":
        return LoadInt()
    raise ValueError("Invalid data type")

И единственное, что пользователь видит здесь, это следующий метод:

### API ###
def get_data(data_url):

   loader = loader_factory(data_url)
   return loader.load(data_url)

Возвращаемое значениеget_data будет иметь значение int или str (или любое другое значение, которое может существовать на заводе).

Учитывая тот факт, что пользователь должен знать, какой это тип URL (строковый, int или другой), я должен просто создавать методы, которые получают определенные типы данных в части кода API?

Или я должен полностью передать ответственность пользователям в этом случае, заставив их сделать что-то вроде:

value: int = get_data(some_url)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...