# *******************************
# gestion des atomes
# *******************************

class Atome:
    """ Classe pour la modelisation d'un atome dont le numero atomique
        determine le nbre de protons, d'electrons
        Le nombre de neutrons est 0 par défaut                          """

    def __init__(self, name, nat, neutrons=0):
        """
        :param name:        nom de l'atome
        :param nat:         numéro atomique
        :param neutrons:    nombre de neutrons
        :return:
        """
        self.nom_ = name
        self.np_ = self.ne_ = nat
        self.nn_ = neutrons

    def __repr__(self):
        """ affiche les attributs d'un objet de la classe Atome """

        return "\nNom de l'element : " + str(self.nom_) + "\n" + \
              str(self.np_) + " protons " + str(self.ne_) + " electrons " + str(self.nn_) + " neutrons"

    def getNom(self):
        return self.nom_

    def getNbProtons(self):
        return self.np_

    def getNbNeutrons(self):
        return self.nn_

    def masse(self):
        """
        :return: la masse atomique d'un atome
        """
        facteur = 10 ** -27
        m = self.np_ * 1.67265 * facteur
        m = m + self.nn_ * 1.67496 * facteur
        m = m + self.ne_ * 9.10953 * 10 ** -31

        return m

if __name__ == '__main__':
    at = Atome("Hydrogene", 1)  # on teste l'attibut par défaut
    print(at)

    at = Atome("Bore", 5, 6)
    print(at)
    print(at.getNom())
    print(at.getNbProtons())
    print(at.getNbNeutrons())
    print(at.masse())