我如何使用@DataClass实现 *asdict()或 *asdict()
我无法实现asdisct。我有阅读信息,但是使用Asdict时仍然有错误。
@dataclass
class InfoMessage():
"""Информационное сообщение o тренировке."""
def __init__(self,
training_type: str, # Тип тренировки.
duration: float, # Продолжительность тренировки.
distance: float, # Продолжительность тренировки.
speed: float, # Дистанция, выполняемая на тренировке.
calories: float) -> None: # Калории, сжигаемые на тренировке.
self.training_type = training_type # имя класса тренировки.
self.duration = duration # длительность тренировки в часах.
# дистанция в километрах, которую преодолел пользователь
# за время тренировки.
self.distance = distance
# средняя скорость, с которой двигался пользователь.
self.speed = speed
# количество килокалорий, которое израсходовал пользователь
# за время тренировки.
self.calories = calories
self.message = ('Тип тренировки: {self.training_type}_1d;'
'Длительность: {self.duration:.3f}_1d ч.; '
'Дистанция: {self.distance:.3f}_1d км; '
'Ср. скорость: {self.speed:.3f}_1d км/ч; '
'Потрачено ккал: {self.calories:.3f}_1d.')
def get_message(self) -> str:
"""функция для отображения окончательного сообщения."""
return self.message.format(*asdict(self))
I can't implement asdisct. I have read information but I still have errors when using asdict.
@dataclass
class InfoMessage():
"""Информационное сообщение o тренировке."""
def __init__(self,
training_type: str, # Тип тренировки.
duration: float, # Продолжительность тренировки.
distance: float, # Продолжительность тренировки.
speed: float, # Дистанция, выполняемая на тренировке.
calories: float) -> None: # Калории, сжигаемые на тренировке.
self.training_type = training_type # имя класса тренировки.
self.duration = duration # длительность тренировки в часах.
# дистанция в километрах, которую преодолел пользователь
# за время тренировки.
self.distance = distance
# средняя скорость, с которой двигался пользователь.
self.speed = speed
# количество килокалорий, которое израсходовал пользователь
# за время тренировки.
self.calories = calories
self.message = ('Тип тренировки: {self.training_type}_1d;'
'Длительность: {self.duration:.3f}_1d ч.; '
'Дистанция: {self.distance:.3f}_1d км; '
'Ср. скорость: {self.speed:.3f}_1d км/ч; '
'Потрачено ккал: {self.calories:.3f}_1d.')
def get_message(self) -> str:
"""функция для отображения окончательного сообщения."""
return self.message.format(*asdict(self))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您在这里不使用
@DataClass
Decorator,但您也不需要解决问题。如果您将自我传递到字符串模板,则应很好地格式化。但是,我认为您在正确的轨道上使用
dataclass
,因为这可能会使您的代码变得更加简单:如果您仅将其用于调试目的,那么您可能会从
中找到自然的弦乐化。 Dataclass
已经足够好:I don't think you are making use of the
@dataclass
decorator here, but you also don't need to to fix your problem. If you pass self to your string template it should format nicely.However, I think you are on the right track with a
dataclass
as this could make your code a lot simpler:If you only use this for debugging purposes, then you might find the natural stringification from
dataclass
is good enough: