# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from swagger_server.models.base_model_ import Model
from swagger_server.models.action import Action  # noqa: F401,E501
from swagger_server.models.link import Link  # noqa: F401,E501
from swagger_server import util


class Entity(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    def __init__(self, _class: List[str]=None, actions: List[Action]=None, links: List[Link]=None):  # noqa: E501
        """Entity - a model defined in Swagger

        :param _class: The _class of this Entity.  # noqa: E501
        :type _class: List[str]
        :param actions: The actions of this Entity.  # noqa: E501
        :type actions: List[Action]
        :param links: The links of this Entity.  # noqa: E501
        :type links: List[Link]
        """
        self.swagger_types = {
            '_class': List[str],
            'actions': List[Action],
            'links': List[Link]
        }

        self.attribute_map = {
            '_class': 'class',
            'actions': 'actions',
            'links': 'links'
        }
        self.__class = _class
        self._actions = actions
        self._links = links

    @classmethod
    def from_dict(cls, dikt) -> 'Entity':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The Entity of this Entity.  # noqa: E501
        :rtype: Entity
        """
        return util.deserialize_model(dikt, cls)

    @property
    def _class(self) -> List[str]:
        """Gets the _class of this Entity.


        :return: The _class of this Entity.
        :rtype: List[str]
        """
        return self.__class

    @_class.setter
    def _class(self, _class: List[str]):
        """Sets the _class of this Entity.


        :param _class: The _class of this Entity.
        :type _class: List[str]
        """

        self.__class = _class

    @property
    def actions(self) -> List[Action]:
        """Gets the actions of this Entity.


        :return: The actions of this Entity.
        :rtype: List[Action]
        """
        return self._actions

    @actions.setter
    def actions(self, actions: List[Action]):
        """Sets the actions of this Entity.


        :param actions: The actions of this Entity.
        :type actions: List[Action]
        """

        self._actions = actions

    @property
    def links(self) -> List[Link]:
        """Gets the links of this Entity.


        :return: The links of this Entity.
        :rtype: List[Link]
        """
        return self._links

    @links.setter
    def links(self, links: List[Link]):
        """Sets the links of this Entity.


        :param links: The links of this Entity.
        :type links: List[Link]
        """

        self._links = links
