Ceci est une question de devoir, mais comme vous pouvez le voir, j'ai déjà écrit la plupart du code. :) Ce que j'essaie de faire, c'est que l'objet Agent hérite des méthodes de l'objet Investisseur, car les méthodes de l'objet Agent sont censées être essentiellement les mêmes. La seule différence concerne les constructeurs, Investisseur prend 6 paramètres, Agent en prend 7. Vous pouvez voir que les paramètres sont fondamentalement les mêmes.
Investisseur.load et Investisseur.report fonctionnent, pour la plupart, comme prévu. Les méthodes héritées dans Agent ne fonctionnent pas. Voir ci-dessous.
Mes problèmes principaux:
- Lorsque j'exécute report(o) sur Investisseur, la sortie est légèrement perturbée. Il y a de petits symboles de paragraphe à la fin de chaque ligne, plutôt qu'un saut de ligne. (Je développe sur Linux)
- Lorsque j'exécute load et report sur Agent, mes tableaux (rapports et données) ne sont pas populés comme ils devraient l'être. En raison de cela, report n'affiche rien. Comment puis-je configurer mes variables de classe pour qu'elles fonctionnent comme je le souhaite?
Merci!
Je vais réajouter après la date limite de remise.
Voici comment le code ci-dessus devrait fonctionner.
>>> à partir de sys, importer stdout comme o
>>> import datetime
>>> de hedgefunds import *
>>>
>>> i = Investisseur('Flintstone','Fred',datetime.date(1965,12,3),'mâle','M.')
>>>
>>> je
Investisseur('Flintstone', 'Fred', datetime.date(1965, 12, 3), 'mâle', 'M.', 1)
>>> repr(i)
"Investisseur('Flintstone', 'Fred', datetime.date(1965, 12, 3), 'mâle', 'M.', 1)"
>>> i.__repr__() # CELA CONTROLE LES DEUX LIGNES PRÉCÉDENTES
"Investisseur('Flintstone', 'Fred', datetime.date(1965, 12, 3), 'mâle', 'M.', 1)"
>>> eval(repr(i)) # L'OBJET PEUT ÊTRE RECRÉÉ DEPUIS SA CHAÎNE REPRÉSENTATIVE
Investisseur('Flintstone', 'Fred', datetime.date(1965, 12, 3), 'mâle', 'M.', 1)
>>>
>>> je # REMARQUEZ UNE DONNÉE SUPPLÉMENTAIRE QUE NOUS N'AVONS PAS SPÉCIFIÉE ?
Investisseur('Flintstone', 'Fred', datetime.date(1965, 12, 3), 'mâle', 'M.', 1)
>>> # LE '1' À LA FIN EST L'ID DE L'ENREGISTREMENT rid. LA CHAÎNE REPR INCLUT TOUTES LES DONNÉES DONC VOUS LE VOYEZ.
>>> # LA CLASSE INVESTISSEUR DEVRAIT ATTRIBUER UN rid SI UN N'EST PAS PASSÉ DANS LE CONSTRUCTEUR.
>>>
>>> imprimer i
1, M. Fred Flintstone, 03/12/1965, mâle
>>> i.__str__() # CELA CONTRÔLE LA LIGNE PRÉCÉDENTE
'1, M. Fred Flintstone, 03/12/1965, mâle'
>>>
>>> # REMARQUEZ QUE LE NOM EST BIEN ASSEMBLÉ ET L'IDENTIFIANT EST AU DÉBUT
>>> # REMARQUE datetime.date(AAAA, MM, JJ) MAIS NOUS IMPRIMONS AU FORMAT MM/JJ/AAAA
>>>
>>> # MAINTENANT VOYONS LES ATTRIBUTS DE NOTRE OBJET INVESTISSEUR
>>> i.nom_de_famille
'Flintstone'
>>> i.prénom
'Fred'
>>> i.dob
datetime.date(1965, 12, 3)
>>> i.date_de_naissance
'12/03/1965'
>>> i.sexe
'mâle'
>>> i.titre
'M.'
>>> i.nom
'M. Fred Flintstone'
>>> i.rid
1
>>>
>>> # MAIS NOUS ALLONS DEVOIR STOCKER PLUSIEURS OBJETS INVESTISSEURS QUELQUE PART
>>> # DONC EN PLUS DE CRÉER DES OBJETS INVESTISSEURS, LA CLASSE INVESTISSEUR DOIT AGIR COMME UN JEU D'ENREGISTREMENTS
>>>
>>> Investisseur.rapport(o) # o A ÉTÉ DÉFINI SUR STDOUT AU DÉBUT DE CETTE TRACE MAIS POURRAIT ÊTRE N'IMPORTE QUEL FICHIER
>>> Investisseur.ajouter(i) # AUCUN ENREGISTREMENT DONC AJOUTONS-EN UN
>>> Investisseur.rapport(o) # MAINTENANT NOUS AVONS QUELQUE CHOSE À SIGNALER
1, M. Fred Flintstone, 03/12/1965, mâle
>>>
>>> Investisseur.ajouter(Investisseur('Flintstone','Wilma',datetime.date(1968,1,15),'femme','Mme.'))
>>> Investisseur.rapport(o)
1, M. Fred Flintstone, 03/12/1965, mâle
2, Mme. Wilma Flintstone, 15/01/1968, femme
>>>
>>> # NOUS POURRIONS CONTINUER À AJOUTER DES INVESTISSEURS MANUELLEMENT MAIS PUISQUE NOUS AVONS UN FICHIER PLEIN D'ENTRE EUX....
>>> Investisseur.charger('investisseurs.csv')
>>> Investisseur.rapport(o)
1, M. Charles Creed, 05/12/1928, mâle
2, Miss Sheila Geller, 12/11/1962, femme
3, M. Fred Kenobi, 13/07/1957, mâle
4, Miss Rachel Geller, 11/07/1968, femme
5, M. Charles Rubble, 23/09/1940, mâle
6, Mme. Leah Skywalker, 02/07/1929, femme
7, M. Bill Balboa, 06/03/1988, mâle
8, Dr. Sheila Barkley, 26/08/1950, femme
.
.
>>> # VOUS DEVRIEZ VOIR 120 ENREGISTREMENTS (NOS DEUX ENREGISTREMENTS AJOUTÉS MANUELLEMENT ONT DISPARU)
>>>
>>>
>>>
>>> # AGENTS
>>>
>>> a = Agent(2.1,'Rubble','Barney',datetime.date(1966,4,20),'mâle','M.')
>>> a
Agent(2.1000000000000001, 'Rubble', 'Barney', datetime.date(1966, 4, 20), 'mâle', 'M.', 1)
>>> repr(a)
"Agent(2.1000000000000001, 'Rubble', 'Barney', datetime.date(1966, 4, 20), 'mâle', 'M.', 1)"
>>> eval(repr(a))
Agent(2.1000000000000001, 'Rubble', 'Barney', datetime.date(1966, 4, 20), 'mâle', 'M.', 1)
>>> print a
1, M. Barney Rubble, 20/04/1966, mâle, 2.1
>>> a.nom_de_famille
'Rubble'
>>> a.prénom
'Barney'
>>> a.dob
datetime.date(1966, 4, 20)
>>> a.date_de_naissance
'20/04/1966'
>>> a.sexe
'mâle'
>>> a.titre
'M.'
>>> a.nom
'M. Barney Rubble'
>>> a.rid
1
>>> a.commission
2.1000000000000001
>>> Agent.ajouter(a)
>>> Agent.rapport(o)
1, M. Barney Rubble, 20/04/1966, mâle, 2.1
>>> Agent.charger('agents.csv')
>>> Agent.rapport(o)
1, M. Barney Flintstone, 13/02/1933, mâle, 4.0
2, Miss Rachel Rubble, 21/11/1982, femme, 2.5
3, Dr. Ted Geller, 14/03/1963, mâle, 8.0
4, Miss Phoebe Creed, 06/11/1959, femme, 5.5
5, M. Luke Kenobi, 24/08/1945, mâle, 2.5
6, Dr. Megan Creed, 26/03/1957, femme, 5.5
7, M. Ted Rubble, 14/09/1931, mâle, 3.5
8, Mme. Monica Balboa, 07/05/1934, femme, 1.5