2017-06-19 2 views
1

Je n'arrive pas à saisir comment créer un fichier de sauvegarde pour cette liste d'équipes. Le problème que je rencontre est lorsque j'essaie de créer ce qu'il faut sauvegarder dans le fichier txt. Je ne sais pas pourquoi je ne peux pas obtenir self.player etc pour être écrit dans le code. En fonction de la façon dont les informations sur les joueurs sont écrites, comment dois-je écrire le fichier txt à enregistrer et charger?Création d'un torréfacteur d'accès aux fichiers en python

class teamClass: 

    Player = "" 
    phone_number = "" 
    jersey = "" 

    def __init__(self, Player, phone_number, jersey): 
     self.Player = Player 

     self.phone_number = phone_number 

     self.jersey = jersey 

    def setPlayer(self, Player): 
     self.Player = Player 

    def setphone_number(self, phone_number): 
     self.phone_number = phone_number 

    def setjersey(self, jersey): 
     self.jersey = jersey 

    def setNewPlayer(self, Player): 
     self.setPlayer(Player) 

    # accessor methods 

    def getPlayer(self): 
     return self.Player 

    def getphone_number(self): 
     return self.phone_number 

    def getjersey(self): 
     return self.jersey 

    def displayData(self): 
     print("") 

     print("Player Info: ") 

     print("------------------------") 

     print("Player:", self.Player) 

     print("Phone number:", self.phone_number) 

     print("Jersey:", self.jersey) 
+1

fixer votre empreinte, il est détraqué. –

+0

ouais désolé, il n'a pas copier correctement – JohnnySea

+0

Vous pouvez partager le code que vous avez écrit pour votre processus de sauvegarde. Ceci est juste une classe avec rien lié à l'enregistrement dans un fichier. –

Répondre

0

D'abord, il y a assez peu de problèmes avec votre code:

  • Ne pas créer de classe attributs inutiles et passer outre les utiliser instance attributs. Utilisez un constructeur comme __init__(self, name=None, phone=None, jersay=None) à la place.
  • Do not utilisez des getters et des setters comme vous le feriez en Java. Python suppose que tous les attributs sont accessibles sans effets secondaires; Si vous avez vraiment besoin d'un getter/setter pour un attribut, utilisez un @property.
  • Vous ne voulez pas de displayData -method. Au lieu de cela, define un __str__() -method et appelez simplement print() sur l'instance.

Concernant votre question: Vous pouvez utiliser json, TOML ou tout simplement pickle pour enregistrer votre objet. Voici une bibliothèque toml prête à l'emploi.

Un exemple en utilisant JSON:

import collections 
import json 
Player = collections.namedtuple('Player', ('name', 'phone_number', 'jersay')) 

# Create a new player instance 
p = Player('John Doe', '555-ACME', None) 

# Save the player-data to a json-file 
with open('thefile.txt', 'wt') as f: 
    f.write(json.dumps(p)) 

# Load it back 
with open('thefile.txt', 'rt') as f: 
    p2 = Player(*json.loads(f.read())) 

# Look, ma! They are the same 
assert p == p2