【问题标题】:In Python how can I create a method in a class that assigns values to attributes在 Python 中,如何在为属性赋值的类中创建方法
【发布时间】:2021-02-08 00:44:30
【问题描述】:

我希望运行一种方法,将值分配给对象,而不是在括号中声明它们。我有以下代码不起作用。我对所有解决方案持开放态度,包括那些包含构造函数中包含的方法的解决方案。

class Player:
    def __init__(self, name): 
        self.name = name
        
    #gather player detail method

    def player_details():
        return input('Name: ')

player1 = Player.player_details()
#I want the following line of code to output whatever the player name was entered as
print (player1.name)

【问题讨论】:

    标签: python class methods instantiation init


    【解决方案1】:

    使用 getter setter 尝试此代码

    类播放器: def init(self,name=""): self.name = 名字

    getter 方法

    def get_player_details(self): 返回自己的名字

    设置方法

    def set_player_details(self, x): self.name = x

    player1 = 播放器()

    使用 setter 设置年龄

    input_detail = input("请输入玩家姓名:")

    #将输入设置为玩家详细信息 player1.set_player_details(input_detail)

    使用 getter 检索年龄

    打印(player1.get_player_details())

    打印(player1.name)

    【讨论】:

      【解决方案2】:

      这就是你要找的吗?您似乎不小心将您的方法创建为“静态方法”,即不访问类属性的方法。您可以通过添加 'self' 作为参数来改变它。

      class Player:
              def __init__(self, name): 
                  self.name = name
                  
              #gather player detail method
          
              def player_details(self):
                  self.name = input('Name: ')
          
      player1 = Player.player_details()
      # I want the following line of code to output whatever the player name was entered as
      print (player1.name)
      

      【讨论】:

        【解决方案3】:

        在这里您可以像普通属性一样分配:

        def player_details(self):
            self.name = input('Name: ')
        

        或者你也可以得到一个论点:

        def player_details(self, newName):
            self.name = newName
        

        【讨论】:

          【解决方案4】:

          这样做实现了我想要的,谢谢。

          class Player:
                  def __init__(self, name =""): 
                      self.name = input('Name: ')
                      
              
          #creating an instance of the Player class prompts the user to input name
          #say I input "Jo"
          player1 = Player()
          
          #prints out "Jo"
          print (player1.name)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多