Skip to content

synt.expr.named_expr ¤

NamedExpr ¤

Bases: Expression

Inline assignment expression, aka :=.

References

expr.ExprPrecedence.NamedExpr.

Source code in synt/expr/named_expr.py
class NamedExpr(expr.Expression):
    r"""Inline assignment expression, aka `:=`.

    References:
        [expr.ExprPrecedence.NamedExpr][synt.expr.expr.ExprPrecedence.NamedExpr].
    """

    receiver: Identifier
    """The identifier to be assigned."""
    value: expr.Expression
    """The value to be assigned to the receiver."""
    precedence = expr.ExprPrecedence.NamedExpr
    expr_type = expr.ExprType.NamedExpr

    def __init__(self, receiver: Identifier, value: expr.IntoExpression):
        """Initialize a named expr expression.

        Args:
            receiver: The identifier to be assigned.
            value: The value to be assigned to the receiver.
        """
        self.receiver = receiver
        self.value = value.into_expression()

        if self.value.precedence > self.precedence:
            self.value = self.value.wrapped()

    def into_code(self) -> str:
        return f"{self.receiver.into_code()} := {self.value.into_code()}"

precedence class-attribute instance-attribute ¤

precedence = NamedExpr

expr_type class-attribute instance-attribute ¤

expr_type = NamedExpr

receiver instance-attribute ¤

receiver: Identifier = receiver

The identifier to be assigned.

value instance-attribute ¤

value: Expression = into_expression()

The value to be assigned to the receiver.

__init__ ¤

__init__(receiver: Identifier, value: IntoExpression)

Initialize a named expr expression.

Parameters:

Name Type Description Default
receiver Identifier

The identifier to be assigned.

required
value IntoExpression

The value to be assigned to the receiver.

required
Source code in synt/expr/named_expr.py
def __init__(self, receiver: Identifier, value: expr.IntoExpression):
    """Initialize a named expr expression.

    Args:
        receiver: The identifier to be assigned.
        value: The value to be assigned to the receiver.
    """
    self.receiver = receiver
    self.value = value.into_expression()

    if self.value.precedence > self.precedence:
        self.value = self.value.wrapped()

into_code ¤

into_code() -> str
Source code in synt/expr/named_expr.py
def into_code(self) -> str:
    return f"{self.receiver.into_code()} := {self.value.into_code()}"