armi.utils.properties module¶
This module contains methods for adding properties with custom behaviors to classes.
- armi.utils.properties.numpyHackForEqual(val1, val2)[source]¶
checks lots of types for equality like strings and dicts
- armi.utils.properties.createImmutableProperty(name, dependencyAction, doc)[source]¶
Create a properrty that raises useful AttributeErrors when the attribute has not been assigned.
- Parameters
name (str) – Name of the property. This is unfortunately necessary, because the method does not know the name of the property being assigned by the developer.
dependencyAction (str) – Description of an action that needs to be performed in order to set the value of the property.
doc (str) – Docstring of the property.
See also
armi.utils.properties.unlockImmutableProperties
,armi.utils.properties.lockImmutableProperties
Examples
The following example is esentially exactly how this should be used.
>>> class SomeClass: ... myNum = createImmutableProperty('myNum', 'You must invoke the initialize() method', 'My random number') ... def initialize(self, val): ... unlockImmutableProperties(self) ... try: ... self.myNum = val ... finally: ... lockImmutableProperties(self) >>> sc = SomeClass() >>> sc.myNum.__doc__ My Random Number >>> sc.myNum # raises error, because it hasn't been assigned ImmutablePropertyError >>> sc.myNum = 42.1 >>> sc.myNum 42.1 >>> sc.myNum = 21.05 * 2 # raises error, because the value cannot change after it has been assigned. ImmutablePropertyError >>> sc.initialize(42.1) # this works, because the values are the same. >>> sc.initialize(100) # this fails, because the value cannot change ImmutablePropertyError
- exception armi.utils.properties.ImmutablePropertyError[source]¶
Bases:
Exception
Exception raised when performing an illegal operation on an immutable property.