class ipkiss3.all.DefinitionProperty(internal_member_name=None, locked=False, preprocess=None, **kwargs)

DefinitionProperty is one of the most frequently used property types. If your class has a _default_<name> method, with <name> the name of your property, the result of this method will be used as the default.

A DefinitionProperty should always be an attribute of a class that inherits (directly or indirectly) from StrongPropertyInitializer.



The default value of the property, can be a function as well.

allow_none: bool, optional

If True, the property’s value can be None

restriction: optional

If you assign a restriction to the DefinitionProperty, ipkiss will enforce that a assigned value complies with the restriction.

locked: bool, optional

If locked is True, the property is readonly, once you’ve assigned a value, you can’t assign a new value to it.

fdef_name: str, optional

Allows you to choose a different method as the _default_* method

cache_invalidation: bool, optional, default = True

If set True (default), the cached value of this property will be flagged as ‘dirty’ whenever another property is set or a depencency changes. When set False, this will not happen; so generally this property will only be calculated once.

doc: str, optional

A docstring explaining the meaning of the property.


You should take care when overridding properties, the following for example will not work:

class A(StrongPropertyInitializer):

    char = DefinitionProperty(default='a')

class B(A):

    char = 'b'  # this will not work