Skip to main content
Log in

Mojo trait

Stringable

The Stringable trait describes a type that can be converted to a String.

Any type that conforms to Stringable or StringableRaising works with the built-in print() and str() functions.

The Stringable trait requires the type to define the __str__() method. For example:

@value
struct Foo(Stringable):
var s: String

fn __str__(self) -> String:
return self.s
@value
struct Foo(Stringable):
var s: String

fn __str__(self) -> String:
return self.s

Now you can pass an instance of Foo to the str() function to get back a String:

var foo = Foo("test")
print(str(foo) == "test")
var foo = Foo("test")
print(str(foo) == "test")
True
True

Note: If the __str__() method might raise an error, use the StringableRaising trait, instead.

About the difference between __repr__() and __str__(): The method __repr__ compute the compute the "official" string representation of an object while __str__ computes the "informal" or nicely printable string representation of an object.

This method differs from __repr__() in that there is no expectation that __str__() return a valid Mojo expression: a more convenient or concise representation can be used.

Implemented traits

AnyType, UnknownDestructibility

Methods

__str__

__str__(self: _Self) -> String

Get the string representation of the type.

Returns:

The string representation of the type.