Traits User Manual
Previous: 3.2.2 Specially-named Notification Handlers Table of Contents Next: 3.2.4 General Static Handler Signatures
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

3.2.3        Attribute-specific Handler Signatures

For an attribute specific notification handler, the method signatures supported are:

_name_changed(self)

_name_changed(self, new)

_name_changed(self, old, new)

_name_changed(self, name, old, new)

The method name can also be _name_fired(), with the same set of signatures.

In these signatures:

·    new is the new value assigned to the trait attribute. For List and Dict objects, this is a list of the items that were added.

·    old is the old value assigned to the trait attribute. For List and Dict objects, this is a list of the items that were deleted.

·    name is the name of the trait attribute.  The extended trait name syntax is not supported.[4]

Note that these signatures follow a different pattern for argument interpretation from dynamic handlers and decorated static handlers. Both of the following methods define a handler for an object’s name trait:

def _name_changed( self, arg1, arg2, arg3):

    pass

 

@on_trait_change('name')

def some_method( self, arg1, arg2, arg3):

    pass

However, the interpretation of arguments to these methods differs, as shown in Table 6.

Table 6 Handler argument interpretation

Argument

_name_changed

@on_trait_change

arg1

name

object

arg2

old

name

arg3

new

new

Previous: 3.2.2 Specially-named Notification Handlers Table of Contents Next: 3.2.4 General Static Handler Signatures
Traits User Manual