2017-06-19 52 views
1

我無法理解如何爲此團隊名單創建保存文件。我遇到的問題是當我嘗試創建保存在txt文件中的內容時。林不知道爲什麼我不能讓self.player等寫在代碼中。根據玩家信息的寫法,我應該如何編寫要保存和加載的txt文件?在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

解決您的縮進,這是不正常的。 –

+0

對不起,它沒有正確複製 – JohnnySea

+0

您可能想分享您爲保存過程編寫的代碼。這只是一個與保存到文件無關的類。 –

回答

0

首先,有相當多的問題與您的代碼:

  • 不要創建無用類的屬性和使用實例的屬性覆蓋它們。改爲使用__init__(self, name=None, phone=None, jersay=None)之類的構造函數。
  • Do not像在Java中一樣使用getter和setter。 Python假定所有屬性都可以被訪問而沒有副作用;如果你確實需要屬性的getter/setter,請使用@property
  • 你不想要一個displayData-方法。相反,define a __str__()-方法,只是在實例上調用print()

關於你的問題:你可以使用json,toml或者只是pickle來保存你的對象。這是一個toml庫準備使用。

一個例子使用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