【问题标题】:Using user input function in Classes在类中使用用户输入功能
【发布时间】:2022-12-03 10:15:06
【问题描述】:

我正在制作一个有多个玩家的简单游戏,每个玩家都可以输入他们的名字,姓氏,每个玩家在开始时被分配 100 分。在我的代码中,一旦我完成了“基本”信息的编码,但当涉及到用户输入时,它就不起作用了。

玩家类的“基础”:(这部分有效)

class Players(): 
    def __init__ (self, firstname, lastname, coins):   #initialising attributes
        self.firstname = firstname
        
        self.lastname = lastname
        
        self.coins= coins
   
    def full_info(self):
      return self.firstname  + self.lastname + self.coins

这是问题所在的第二部分,输入未存储在属性中

  def get_user_input(self):
        firstname= input("Please enter your first name:")
        lastname= input ("Please enter your second name: ")
        coins= 100 #they are assigned automatically 
        return self(firstname, lastname, coins)

我将不胜感激有关用户输入的任何建议。

【问题讨论】:

  • 创建您的minimal reproducible example 并添加到您的问题中,
  • 您永远不会将信息存储到属性中......也许您可以将输入行放入在里面方法,此时将它们存储到属性中

标签: python object oop input


【解决方案1】:

从用户输入构建新实例的函数应该是 classmethodstaticmethod,因为您要调用它来创建新实例。

from dataclasses import dataclass

@dataclass
class Player: 
    firstname: str
    lastname: str
    coins: int

    def full_info(self) -> str:
        return f"{self.firstname} {self.lastname} {self.coins}"

    @classmethod
    def from_user_input(cls) -> 'Player':
        return cls(
            firstname=input("Please enter your first name:"),
            lastname=input("Please enter your second name: "),
            coins=100,
        )

然后您可以调用Player.from_user_input() 提示用户输入名称并返回一个新的Player 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多