Класс данных для игнорирования атрибута в asdict в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Класс данных для игнорирования атрибута в asdict в Python

Сообщение Anonymous »

Я создаю проект Python Tkinter MVC с использованием классов данных, и мне хотелось бы создавать виджеты путем итерации по словарю, созданному методом asdict (при передаче в представление через контроллер); однако есть атрибуты, которые я не хочу включать в набор виджетов. Перед этим изменением я опубликовал что-то похожее на класс ниже (теперь это более специфично для проекта, над которым я работаю, спасибо @Prune, @Cameron_McFee и @Brian_McCutchon за их ответы). Есть ли способ исключить атрибуты из метода asdict? В приведенном ниже примере я не хочу включать слово «клиент» в словарь.
Я экспериментально попробовал включить две спецификации полей — repr=False и init=False для двух полей, но я догадался, что они не будут работать, и они не работают.

Код: Выделить всё

@dataclass
class Product:
name: str
description: str = field(repr=False)
N: float = field(init=False, default=0.0)
P: float
K: float
_customer = None #class variable until assigned
self._customer # but 'self' doesn't exist in this context.

@property
def customer(self):
return self._customer

@customer.setter
def customer(self, value):
self._customer = value
Я понимаю, что для достижения этой цели существуют разные способы создания класса, возможно, избегая классов данных, например:

Код: Выделить всё

class Product:

def __init__(self, name: str, description: str, N: float, P: float, K: float):
self.name = name
self.description = description
self.N = N
self.P = P
self.K = K
self._customer = None

@property
def customer(self):
return self._customer

@customer.setter
def customer(self, value):
self._customer = value
Это требует большего количества шаблонов, которых я хотел бы избежать, если это возможно. Несовершенной аналогией может быть модель на C#, экземпляр которой можно создать с помощью Dapper или EF.

Подробнее здесь: https://stackoverflow.com/questions/662 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»