# coding: utf-8

"""
    Marketcheck Cars API

    <b>Access the New, Used and Certified cars inventories for all Car Dealers in US.</b> <br/>The data is sourced from online listings by over 44,000 Car dealers in US. At any time, there are about 6.2M searchable listings (about 1.9M unique VINs) for Used & Certified cars and about 6.6M (about 3.9M unique VINs) New Car listings from all over US. We use this API at the back for our website <a href='https://www.marketcheck.com' target='_blank'>www.marketcheck.com</a> and our Android and iOS mobile apps too.<br/><h5> Few useful links : </h5><ul><li>A quick view of the API and the use cases is depicated <a href='https://portals.marketcheck.com/mcapi/' target='_blank'>here</a></li><li>The Postman collection with various usages of the API is shared here https://www.getpostman.com/collections/2752684ff636cdd7bac2</li></ul>  # noqa: E501

    OpenAPI spec version: 1.0.3
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


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

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'options': 'list[str]',
        'features': 'list[str]',
        'electronics_f': 'list[str]',
        'exterior_f': 'list[str]',
        'technical_f': 'list[str]',
        'standard_f': 'list[str]',
        'dealer_added_f': 'list[str]',
        'interior_f': 'list[str]',
        'safety_f': 'list[str]',
        'seller_comments': 'str'
    }

    attribute_map = {
        'options': 'options',
        'features': 'features',
        'electronics_f': 'electronics_f',
        'exterior_f': 'exterior_f',
        'technical_f': 'technical_f',
        'standard_f': 'standard_f',
        'dealer_added_f': 'dealer_added_f',
        'interior_f': 'interior_f',
        'safety_f': 'safety_f',
        'seller_comments': 'seller_comments'
    }

    def __init__(self, options=None, features=None, electronics_f=None, exterior_f=None, technical_f=None, standard_f=None, dealer_added_f=None, interior_f=None, safety_f=None, seller_comments=None):  # noqa: E501
        """ListingNestExtraAttributes - a model defined in Swagger"""  # noqa: E501

        self._options = None
        self._features = None
        self._electronics_f = None
        self._exterior_f = None
        self._technical_f = None
        self._standard_f = None
        self._dealer_added_f = None
        self._interior_f = None
        self._safety_f = None
        self._seller_comments = None
        self.discriminator = None

        if options is not None:
            self.options = options
        if features is not None:
            self.features = features
        if electronics_f is not None:
            self.electronics_f = electronics_f
        if exterior_f is not None:
            self.exterior_f = exterior_f
        if technical_f is not None:
            self.technical_f = technical_f
        if standard_f is not None:
            self.standard_f = standard_f
        if dealer_added_f is not None:
            self.dealer_added_f = dealer_added_f
        if interior_f is not None:
            self.interior_f = interior_f
        if safety_f is not None:
            self.safety_f = safety_f
        if seller_comments is not None:
            self.seller_comments = seller_comments

    @property
    def options(self):
        """Gets the options of this ListingNestExtraAttributes.  # noqa: E501

        Installed Options of the car  # noqa: E501

        :return: The options of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._options

    @options.setter
    def options(self, options):
        """Sets the options of this ListingNestExtraAttributes.

        Installed Options of the car  # noqa: E501

        :param options: The options of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._options = options

    @property
    def features(self):
        """Gets the features of this ListingNestExtraAttributes.  # noqa: E501

        List of Features available with the car  # noqa: E501

        :return: The features of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._features

    @features.setter
    def features(self, features):
        """Sets the features of this ListingNestExtraAttributes.

        List of Features available with the car  # noqa: E501

        :param features: The features of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._features = features

    @property
    def electronics_f(self):
        """Gets the electronics_f of this ListingNestExtraAttributes.  # noqa: E501

        List of electronic features available with the car  # noqa: E501

        :return: The electronics_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._electronics_f

    @electronics_f.setter
    def electronics_f(self, electronics_f):
        """Sets the electronics_f of this ListingNestExtraAttributes.

        List of electronic features available with the car  # noqa: E501

        :param electronics_f: The electronics_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._electronics_f = electronics_f

    @property
    def exterior_f(self):
        """Gets the exterior_f of this ListingNestExtraAttributes.  # noqa: E501

        List of exterior features available with the car  # noqa: E501

        :return: The exterior_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._exterior_f

    @exterior_f.setter
    def exterior_f(self, exterior_f):
        """Sets the exterior_f of this ListingNestExtraAttributes.

        List of exterior features available with the car  # noqa: E501

        :param exterior_f: The exterior_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._exterior_f = exterior_f

    @property
    def technical_f(self):
        """Gets the technical_f of this ListingNestExtraAttributes.  # noqa: E501

        List of technical features available with the car  # noqa: E501

        :return: The technical_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._technical_f

    @technical_f.setter
    def technical_f(self, technical_f):
        """Sets the technical_f of this ListingNestExtraAttributes.

        List of technical features available with the car  # noqa: E501

        :param technical_f: The technical_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._technical_f = technical_f

    @property
    def standard_f(self):
        """Gets the standard_f of this ListingNestExtraAttributes.  # noqa: E501

        List of standard features available with the car  # noqa: E501

        :return: The standard_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._standard_f

    @standard_f.setter
    def standard_f(self, standard_f):
        """Sets the standard_f of this ListingNestExtraAttributes.

        List of standard features available with the car  # noqa: E501

        :param standard_f: The standard_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._standard_f = standard_f

    @property
    def dealer_added_f(self):
        """Gets the dealer_added_f of this ListingNestExtraAttributes.  # noqa: E501

        List of dealer added features available with the car  # noqa: E501

        :return: The dealer_added_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._dealer_added_f

    @dealer_added_f.setter
    def dealer_added_f(self, dealer_added_f):
        """Sets the dealer_added_f of this ListingNestExtraAttributes.

        List of dealer added features available with the car  # noqa: E501

        :param dealer_added_f: The dealer_added_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._dealer_added_f = dealer_added_f

    @property
    def interior_f(self):
        """Gets the interior_f of this ListingNestExtraAttributes.  # noqa: E501

        List of interior features available with the car  # noqa: E501

        :return: The interior_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._interior_f

    @interior_f.setter
    def interior_f(self, interior_f):
        """Sets the interior_f of this ListingNestExtraAttributes.

        List of interior features available with the car  # noqa: E501

        :param interior_f: The interior_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._interior_f = interior_f

    @property
    def safety_f(self):
        """Gets the safety_f of this ListingNestExtraAttributes.  # noqa: E501

        List of safety features available with the car  # noqa: E501

        :return: The safety_f of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: list[str]
        """
        return self._safety_f

    @safety_f.setter
    def safety_f(self, safety_f):
        """Sets the safety_f of this ListingNestExtraAttributes.

        List of safety features available with the car  # noqa: E501

        :param safety_f: The safety_f of this ListingNestExtraAttributes.  # noqa: E501
        :type: list[str]
        """

        self._safety_f = safety_f

    @property
    def seller_comments(self):
        """Gets the seller_comments of this ListingNestExtraAttributes.  # noqa: E501

        Seller comments for the car  # noqa: E501

        :return: The seller_comments of this ListingNestExtraAttributes.  # noqa: E501
        :rtype: str
        """
        return self._seller_comments

    @seller_comments.setter
    def seller_comments(self, seller_comments):
        """Sets the seller_comments of this ListingNestExtraAttributes.

        Seller comments for the car  # noqa: E501

        :param seller_comments: The seller_comments of this ListingNestExtraAttributes.  # noqa: E501
        :type: str
        """

        self._seller_comments = seller_comments

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ListingNestExtraAttributes):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
