Хотя вы можете генерировать классы динамически с помощью функции 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
не литералы, а переменные с пользовательским вводом.
Классы моделируют ваше приложение, а содержат данные. Не создавайте отдельные модели для данных.