Commit 09cd2354 authored by GromeTT's avatar GromeTT
Browse files

ENH: Added documentation for

parent 1bf14912
from ml.identifier import ID
"""This module implements the Feature class according to the forest
modeling language 4.0."""
import sys
from abc import ABC
import os
from abc import ABC
from ml.identifier import ID
class Feature(ABC):
"""The Feature class represents the base class for all functionalities
and values."""
def __init__(self, name="", identifier=""):
"""Constructs a new Feature class object with the given name and
:param name: Name of the feature
:param identifier: Identifier of the feature
self.__name = name
# TODO: Move setup code of __class_name into the correct setter method.
if 'ml\\fml40' in sys.modules[self.__class__.__module__].__file__:
self.__class_name = "fml40::{}".format(self.__class__.__name__)
......@@ -16,38 +30,100 @@ def __init__(self, name="", identifier=""):
def class_name(self):
"""Adds the prefix ml40:: to the class name and returns it.
:returns: Name of this object's class
:rtype: str
return self.__class_name
def class_name(self, value):
"""Sets __class_name to value.
:param value: New class name
# !!! What about the namespace?
# ??? Do we really need to have this function?
# Can't this be done implicitly?
self.__class_name = value
def name(self):
"""Returns the object's name.
:returns: Name of the object
:rtype: str
return self.__name
def name(self, value):
"""Sets __name to value.
:param value: New name
self.__name = value
def identifier(self):
"""Returns the object's indentifier.
:returns: Identifier
:rtype: str
return self.__identifier
def identifier(self, value):
self.__identifier = ID(value).identifier
"""Builds an ID object from value and assigns the resulting identifier
to __identifier.
:param value: Proposal of the identifier
self.__identifier = ID(value).identifier
def subFeatures(self):
"""Returns a dict containing all subordinate features.
:returns: All subordinate features.
:rtype: dict[<str>, <Feature>]
return self.__subFeatures
def subFeatures(self, value):
"""Replaces __subFeatures with value.
:param value: New collection of subordinate features
# !!! Do we really want this? Better add and remove functions.
self.__subFeatures = value
def to_json(self):
"""Returns a json representation of this feature. Note that this
function works recursively.
:returns: Json representation
:rtype: str
self.__json_out = {
"class": self.class_name,
"identifier": self.identifier,
......@@ -57,6 +133,6 @@ def to_json(self):
if self.subFeatures:
self.__json_out["subFeatures"] = list()
for key in self.subFeatures.keys():
res = self.subFeatures[key].to_json()
return self.__json_out
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment