2017-10-08 2 views
0

J'ai créé une jolie classe standard pour les invités qui participeront à un événement (avec leurs partenaires/enfants).python3 imprimer la valeur d'un argument pour une classe

class Guest: 
    def __init__(self, name, adult, child, infant): 
     self.name = name 
     self.adult = adult 
     self.child = child 
     self.infant = infant 

et a ajouté plusieurs objets à lui:

adam_s = Guest('Adam Smith', 2, 0, 1) 
sandra_b = Guest('Sandra Bind', 2, 0,1) 
alince_d = Guest('Alice Donovan',2,0,0) 
parents_smith = Guest('Mr&Ms Smith', 2,0,0) 

J'ajouterons de plus en plus d'objets à cette classe. À tout moment, j'aimerais pouvoir additionner le nombre de tous les adultes, enfants et nourrissons pour tous les objets utilisant la classe Invité.

J'ai essayé, ce qui suit mais le résultat n'est pas ce que je voulais (ne me donnant pas les valeurs réelles pour chaque attribut).

for attr,value in vars(Guest).items(): 
    print(attr, value) 

Il est probablement une question très nooby mais je cherchais depuis un certain temps et je ne pouvais pas trouver une solution.

+0

Vous n'allez pas ajouter d'objets à la classe si ... vous créez de nouvelles instances de la classe avec certaines informations. Vous pouvez stocker ces instances dans une liste telle que 'guests = [adam_s, sandra_b, alince_d]' etc ... et ensuite vous pouvez faire une boucle sur celles-ci et les calculs de performance etc ... par exemple: 'sum (g.adult pour g dans invités) 'pour obtenir le compte des invités adultes ... –

Répondre

0

Vous pouvez essayer cette

sum_adult=[] 

    class Guest: 
     def __init__(self, name, adult, child, infant): 
      self.name = name 
      self.adult = adult 
      self.child = child 
      self.infant = infant 

      sum_adult.append(self.adult) 


    adam_s = Guest('Adam Smith', 2, 0, 1) 
    sandra_b = Guest('Sandra Bind', 2, 0,1) 
    alince_d = Guest('Alice Donovan',2,0,0) 
    parents_smith = Guest('Mr&Ms Smith', 2,0,0) 

    print(sum(sum_adult)) 

sortie:

8 
0

Vous pouvez utiliser les éléments suivants:

class Guest: 
    adultCounter = 0 
    def __init__(self, name, adult, child, infant): 
     # your code here 
     Guest.adultCounter +=1 

et vous pouvez appeler la valeur comme ceci:

print ('Total adults: {}'.format(Guest.adultCounter)) 
+0

Salut! Ce qui précède donne le nombre de chaque instance de l'argument utilisé, ce qui peut être utile dans certains cas. Je voulais résumer les valeurs pour toutes les valeurs des adultes de sorte que la réponse précédente fasse le travail. En tout cas, merci pour vos retours car je ferai sûrement usage d'un compteur incrémenté dans les prochains scripts! – DevBegin