"""
Mixins used to create geometry objects.
"""
# Standard library modules.
# Third party modules.
# Local modules.
# Globals and constants variables.
[docs]class DescriptionMixin(object):
"""
Mixin that adds a description property.
"""
@property
def description(self):
"""str: Description of the geometry object."""
return self._description
@description.setter
def description(self, desc):
self._description = desc
[docs]class ModuleMixin(object):
"""
Mixin that adds methods to add, pop and clear modules.
"""
[docs] def add_module(self, module):
"""
Adds a module.
Args:
module (:obj:`Module <pypenelopetools.pengeom.module.Module>`):
Module to add.
"""
if module == self:
raise ValueError("Cannot add this module to this module.")
self._modules.add(module)
[docs] def pop_module(self, module):
"""
Removes a module.
Args:
module (:obj:`Module <pypenelopetools.pengeom.module.Module>`):
Module to remove.
"""
self._modules.discard(module)
[docs] def clear_modules(self):
"""
Clear all modules.
"""
self._modules.clear()
[docs] def get_modules(self):
"""
Returns:
tuple: All modules.
"""
return tuple(self._modules)