Source code for cantools.database.can.attribute

from typing import Generic

from .attribute_definition import AttributeDefinition, AttributeValueTypeVar


[docs] class Attribute(Generic[AttributeValueTypeVar]): """An attribute that can be associated with nodes/messages/signals. """ def __init__(self, value: AttributeValueTypeVar, definition: AttributeDefinition[AttributeValueTypeVar]) -> None: self._value: AttributeValueTypeVar = value self._definition: AttributeDefinition[AttributeValueTypeVar] = definition @property def name(self) -> str: """The attribute name as a string. """ return self._definition.name @property def value(self) -> AttributeValueTypeVar: """The value that this attribute has. """ return self._value @value.setter def value(self, value: AttributeValueTypeVar) -> None: self._value = value @property def formatted_value(self) -> str: """The value of the attribute as it appears in the DBC file """ if self.definition.type_name == "STRING": return f'"{self._value}"' return f'{self._value}' @property def definition(self) -> AttributeDefinition[AttributeValueTypeVar]: """The attribute definition. """ return self._definition def __repr__(self) -> str: return f"attribute('{self.name}', {self.value})"
AttributeType = Attribute[str] | Attribute[int] | Attribute[float]