Traits User Manual
Previous: 2.2.2 Recognized Metadata Attributes Table of Contents Next: 3 Trait Notification
Traits User Manual
1 Introduction
1.1 What Are Traits?
1.2 Background
2 Defining Traits: Initialization and Validation
2.1 Predefined Traits
2.1.1 Predefined Traits for Simple Types
2.1.2 Other Predefined Traits
2.2 Trait Metadata
2.2.1 Internal Metadata Attributes
2.2.2 Recognized Metadata Attributes
2.2.3 Accessing Metadata Attributes
3 Trait Notification
3.1 Dynamic Notification
3.1.1 Example of a Dynamic Notification Handler
3.1.2 The name Parameter
3.1.3 Notification Handler Signatures
3.1.4 Dynamic Handler Special Cases
3.2 Static Notification
3.2.1 Handler Decorator
3.2.2 Specially-named Notification Handlers
3.2.3 Attribute-specific Handler Signatures
3.2.4 General Static Handler Signatures
3.3 Trait Events
3.4 Undefined Object
4 Deferring Trait Definitions
4.1 DelegatesTo
4.2 PrototypedFrom
4.3 Keyword Parameters
4.3.1 Prefix Keyword
4.3.2 Listenable Keyword
4.4 Notification with Deferring
5 Custom Traits
5.1 Trait Subclassing
5.1.1 Defining a Trait Type
5.1.2 Defining a Trait Property
5.1.3 Other TraitType Members
5.2 The Trait() Factory Function
5.2.1 Trait () Parameters
5.2.2 Mapped Traits
5.3 Trait Handlers
5.3.1 TraitPrefixList
5.3.2 TraitPrefixMap
5.4 Custom Trait Handlers
5.4.1 Example Custom Trait Handler
6 Advanced Topics
6.1 Initialization and Validation Revisited
6.1.1 Dynamic Initialization
6.1.2 Overriding Default Values in a Subclass
6.1.3 Reusing Trait Definitions
6.1.4 Trait Attribute Definition Strategies
6.1.5 Type-Checked Methods
6.2 Interfaces
6.2.1 Defining an Interface
6.2.2 Implementing an Interface
6.2.3 Using Interfaces
6.3 Adaptation
6.3.1 Defining Adapters
6.3.2 Using Adapters
6.3.3 Controlling Adaptation
6.4 Property Traits
6.4.1 Property Factory Function
6.4.2 Caching a Property Value
6.5 Persistence
6.5.1 Pickling HasTraits Objects
6.5.2 Predefined Transient Traits
6.5.3 Overriding __getstate__()
6.5.4 Unpickling HasTraits Objects
6.5.5 Overriding __setstate__()
6.6 Useful Methods on HasTraits
6.6.1 add_trait()
6.6.2 clone_traits()
6.6.3 set()
6.6.4 add_class_trait()
6.7 Performance Considerations of Traits

2.2.3        Accessing Metadata Attributes

Here is an example of setting trait metadata using keyword arguments:

# keywords.py --- Example of trait keywords

from enthought.traits.api import HasTraits, Str

 

class Person(HasTraits):

    first_name = Str('',

                     desc='first or personal name',

                     label='First Name')

    last_name =  Str('',

                     desc='last or family name',

                     label='Last Name')

In this example, in a user interface editor for a Person object, the labels “First Name” and “Last Name” would be used for entry fields corre­sponding to the first_name and last_name trait attributes. If the user interface editor supports rollover tips, then the first_name field would display “first or personal name” when the user moves the mouse over it; the last_name field would display “last or family name” when moused over.

To get the value of a trait metadata attribute, you can use the trait() method on a HasTraits object to get a reference to a specific trait, and then access the metadata attribute:

# metadata.py --- Example of accessing trait metadata attributes

from enthought.traits.api import HasTraits, Int, List, Float, \

                                 Instance, Any, TraitType

 

class Foo( HasTraits ): pass

 

class Test( HasTraits ):

    i = Int(99)

    lf = List(Float)

    foo = Instance( Foo, () )

    any = Any( [1, 2, 3 ] )

 

t = Test()

 

print t.trait( 'i' ).default                      # 99

print t.trait( 'i' ).default_kind                 # value

print t.trait( 'i' ).inner_traits                 # ()

print t.trait( 'i' ).is_trait_type( Int )         # True

print t.trait( 'i' ).is_trait_type( Float )       # False

 

print t.trait( 'lf' ).default                     # []

print t.trait( 'lf' ).default_kind                # list

print t.trait( 'lf' ).inner_traits               

    # (<enthought.traits.traits.CTrait object at 0x01B24138>,)

print t.trait( 'lf' ).is_trait_type( List )       # True

print t.trait( 'lf' ).is_trait_type( TraitType )  # True

print t.trait( 'lf' ).is_trait_type( Float )      # False

 

 

print t.trait( 'lf' ).inner_traits[0].is_trait_type( Float )
                                                  # True

print t.trait( 'foo' ).default                    # <undefined>

print t.trait( 'foo' ).default_kind               # factory

print t.trait( 'foo' ).inner_traits               # ()

print t.trait( 'foo' ).is_trait_type( Instance )  # True

print t.trait( 'foo' ).is_trait_type( List  )     # False

 

print t.trait( 'any' ).default                    # [1, 2, 3]

print t.trait( 'any' ).default_kind               # list

print t.trait( 'any' ).inner_traits               # ()

print t.trait( 'any' ).is_trait_type( Any )       # True

print t.trait( 'any' ).is_trait_type( List )      # False


Previous: 2.2.2 Recognized Metadata Attributes Table of Contents Next: 3 Trait Notification
Traits User Manual