【问题标题】:Creating file access team roaster in python在 python 中创建文件访问团队名册
【发布时间】:2026-02-23 07:40:01
【问题描述】:

我无法掌握如何为这个团队名册创建存档文件。我遇到的问题是当我尝试创建要保存在 txt 文件中的内容时。我不知道为什么我不能将 self.player 等写在代码中。根据球员信息的写法,我应该如何写txt文件来保存和加载?

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)

【问题讨论】:

  • 修复你的缩进,它不正常。
  • 是的,很抱歉它没有正确复制
  • 您可能希望分享您为保存过程编写的代码。这只是一个与保存到文件无关的类。

标签: python file-access


【解决方案1】:

首先,你的代码有很多问题:

  • 不要创建无用的类属性并使用实例属性覆盖它们。请改用 __init__(self, name=None, phone=None, jersay=None) 之类的构造函数。
  • Do not 像在 Java 中一样使用 getter 和 setter。 Python 假设可以访问所有属性而没有副作用;如果您确实需要属性的 getter/setter,请使用 @property
  • 您不需要displayData 方法。相反,define 一个 __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

【讨论】: