【问题标题】: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)