# 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.country import Country  # noqa: F401,E501
from swagger_server import util


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

    Do not edit the class manually.
    """
    def __init__(self, name: str=None, number: str=None, country: Country=None, bank_identification: str=None):  # noqa: E501
        """BankAccount - a model defined in Swagger

        :param name: The name of this BankAccount.  # noqa: E501
        :type name: str
        :param number: The number of this BankAccount.  # noqa: E501
        :type number: str
        :param country: The country of this BankAccount.  # noqa: E501
        :type country: Country
        :param bank_identification: The bank_identification of this BankAccount.  # noqa: E501
        :type bank_identification: str
        """
        self.swagger_types = {
            'name': str,
            'number': str,
            'country': Country,
            'bank_identification': str
        }

        self.attribute_map = {
            'name': 'name',
            'number': 'number',
            'country': 'country',
            'bank_identification': 'bankIdentification'
        }
        self._name = name
        self._number = number
        self._country = country
        self._bank_identification = bank_identification

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

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

    @property
    def name(self) -> str:
        """Gets the name of this BankAccount.

        account name  # noqa: E501

        :return: The name of this BankAccount.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name: str):
        """Sets the name of this BankAccount.

        account name  # noqa: E501

        :param name: The name of this BankAccount.
        :type name: str
        """

        self._name = name

    @property
    def number(self) -> str:
        """Gets the number of this BankAccount.

        account number  # noqa: E501

        :return: The number of this BankAccount.
        :rtype: str
        """
        return self._number

    @number.setter
    def number(self, number: str):
        """Sets the number of this BankAccount.

        account number  # noqa: E501

        :param number: The number of this BankAccount.
        :type number: str
        """

        self._number = number

    @property
    def country(self) -> Country:
        """Gets the country of this BankAccount.


        :return: The country of this BankAccount.
        :rtype: Country
        """
        return self._country

    @country.setter
    def country(self, country: Country):
        """Sets the country of this BankAccount.


        :param country: The country of this BankAccount.
        :type country: Country
        """

        self._country = country

    @property
    def bank_identification(self) -> str:
        """Gets the bank_identification of this BankAccount.

        bank identification, like BIC code  # noqa: E501

        :return: The bank_identification of this BankAccount.
        :rtype: str
        """
        return self._bank_identification

    @bank_identification.setter
    def bank_identification(self, bank_identification: str):
        """Sets the bank_identification of this BankAccount.

        bank identification, like BIC code  # noqa: E501

        :param bank_identification: The bank_identification of this BankAccount.
        :type bank_identification: str
        """

        self._bank_identification = bank_identification
