Создать унаследованный класс с пользовательским вводом - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь закодировать проект инвентаризации продукта. Я наткнулся на эту проблему и искал несколько дней, но не мог найти способ сделать это. Как я могу создать класс, унаследованный от базового класса с пользовательским вводом ..

Вот базовый класс:

class Product:
    def __init__(self, title, color, price):
        self.title = title
        self.color = color
        self.price = price

Я пытаюсь добиться того, чтобы пользователь мог добавлять товары сам, скажем, нажав 2, он попросит его ввести тип продукта (слой), а затем параметры, специфичные для продукта, которые создадут новый класс. наследуется от базового класса. Как это:

class coats(Product):
    def __init__(self, material, size):
    self.material = material
    self.size = size

Я могу создавать экземпляры с пользовательским вводом, но создавая унаследованные классы, я не мог этого понять. Я ценю, если вы могли бы помочь. Спасибо.

1 Ответ

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

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

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

class Product:
    def __init__(self, type, price, properties):
        self.type = type
        self.price = price
        self.properties = properties

затем для создания продукта coat используйте:

products = {}
products['coat'] = Product('coat', 10.0, {'color': 'some color', 'material': 'some material', size: 12})

где различные значения и ключ products не литералы, а переменные с пользовательским вводом.

Классы моделируют ваше приложение, а содержат данные. Не создавайте отдельные модели для данных.

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