You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类用户输入函数失效求助:多玩家游戏信息存储异常

问题分析与改进方案

核心问题点

  1. 方法设计逻辑错误:get_user_input作为实例方法,调用它需要先存在一个Players实例,但我们的需求是通过输入创建新玩家,逻辑完全颠倒。
  2. 实例创建语法错误:代码中return self(firstname, lastname, coins)是错误用法,self是类的实例对象,不能像类本身那样用来创建新实例。
  3. 字符串拼接类型错误:full_info方法直接拼接字符串和整数(coins是int类型),会触发TypeError。

改进方案一:用类方法实现玩家创建

将get_user_input改为类方法,直接通过类创建新玩家实例,无需依赖已存在的对象:

class Players(): 
    def __init__ (self, firstname, lastname, coins):
        self.firstname = firstname
        self.lastname = lastname
        self.coins = coins
   
    def full_info(self):
        # 修复类型错误,用f-string格式化输出更清晰
        return f"{self.firstname} {self.lastname} - 当前积分: {self.coins}"
    
    @classmethod
    def get_user_input(cls):
        firstname = input("请输入你的名字: ")
        lastname = input("请输入你的姓氏: ")
        coins = 100  # 初始积分自动分配
        # 通过类引用cls创建并返回新实例
        return cls(firstname, lastname, coins)

使用方式:

# 从用户输入创建新玩家
new_player = Players.get_user_input()
# 查看玩家信息
print(new_player.full_info())

改进方案二:用独立函数实现玩家创建

如果不想修改类结构,可以写一个独立函数来处理输入并创建实例:

class Players(): 
    def __init__ (self, firstname, lastname, coins):
        self.firstname = firstname
        self.lastname = lastname
        self.coins = coins
   
    def full_info(self):
        return f"{self.firstname} {self.lastname} - 当前积分: {self.coins}"

def create_player_from_input():
    firstname = input("请输入你的名字: ")
    lastname = input("请输入你的姓氏: ")
    return Players(firstname, lastname, 100)

使用方式:

new_player = create_player_from_input()
print(new_player.full_info())

内容的提问来源于stack exchange,提问作者cupcake3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:55:26