繁体   English   中英

在 Python 中,我如何在 class 中创建一个方法来为属性赋值

[英]In Python how can I create a method in a class that assigns values to attributes

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

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)

使用 getter setter 尝试此代码

class 玩家:def init (self,name=""): self.name = name

吸气方法

def get_player_details(self): 返回 self.name

设置方法

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

玩家 1 = 玩家 ()

使用 setter 设置年龄

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

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

使用 getter 检索年龄

打印(player1.get_player_details())

打印(player1.name)

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

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

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

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

这是你要找的吗? 您似乎不小心将您的方法创建为“静态方法”,即不访问 class 属性的方法。您可以通过添加“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)

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM