83. attributes — Attributes

This module defines a general class for adding extra attributes to other objects without cluttering the name space.

class attributes.Attributes(data={}, default=None)[source]

A general class for holding attributes.

This class is a versatile dict class for objects that need a customizable set of attributes, while avoiding a wildly expanding name space.

The class has dict type and object/attribute type syntax. Furthermore, an instance can be called as a function to populate or update its contents. Giving an attribute the value None removes it from the dict. Any non-existing attribute returns None.

Parameters:

  • data: a dict or any other object that can be used to initialize a Dict. This provides the data stored in the Attributes.
  • default: either another Attributes instance, or None. If another Attributes is specified, keys not existing in self will be looked up in default and that value will be returned.

Example:

>>> A = Attributes()
>>> print(A)
{}
>>> A(color='red',alpha=0.7,ontop=True)
>>> print(A)
{'alpha': 0.7, 'color': 'red', 'ontop': True}
>>> A.ontop = None
>>> A.alpha = 0.8
>>> print(A)
{'alpha': 0.8, 'color': 'red'}
>>> B = Attributes({'color':'green'},default=A)
>>> print(B)
{'color': 'green'}
>>> print(B.color,B.alpha)
green 0.8
>>> A.clear()
>>> print(A)
{}
>>> print(B.color,B.alpha)
green None
>>> B(color=None,alpha=1.0)
>>> print(B)
{'alpha': 1.0}
>>> B['alpha'] = None
>>> print(B)
{}