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.