Los Traits (en inglés, rasgos), son un tipo abstracto, utilizado como "modelo conceptual simple para estructurar programas orientados a objetos.".[1] Los traits son similares a los mixins, pero pueden incluir definiciones para métodos de clase. Se ha propuesto la inclusión de traits en Smalltalk, ActionScript 3.0, y ya se encuentran en Perl 6, PHP 5.4, Rust y Scala. Los mixins de módulo de Ruby tienen un cierto grado de similitud con los traits.
Los traits fueron inicialmente desarrollados en el Software Composition Group, de la Universidad de Berna.