# Prototype Module¶

This module contains the Prototype that can be used to create inheritance on object level instead of class level.

class knittingpattern.Prototype.Prototype(specification, inherited_values=())[source]

Bases: object

This class provides inheritance of its specifications on object level.

Throughout this class specification key refers to a hashable object to look up a value in the specification.

__contains__(key)[source]

key in prototype

Parameters: key¶ – a specification key whether the key was found in the specification bool
__getitem__(key)[source]

prototype[key]

Parameters: key¶ – a specification key the value behind key in the specification KeyError – if no value was found
__init__(specification, inherited_values=())[source]

create a new prototype

Parameters: specification¶ – the specification of the prototype. This specification can be inherited by other prototypes. It can be a dict or an other knittingpattern.Prototype.Prototype or anything else that supports __contains__() and __getitem__()

To look up a key in the specification it will be walked through

1. specification
2. inherited_values in order

However, new lookups can be inserted at before inherited_values, by calling inherit_from().

__weakref__

list of weak references to the object (if defined)

get(key, default=None)[source]
Returns: the value behind key in the specification. If no value was found, default is returned. key¶ – a specification key
inherit_from(new_specification)[source]

Inherit from a new_specification

Parameters: new_specification¶ – a specification as passed to __init__()

The new_specification is inserted before the first inherited value.

If the order is

after calling prototype.inherit_from(new_specification) the lookup order is

1. specification
2. new_specification
3. inherited_values