![](/img/trans.png)
[英]Execute a function with an instance based on user input (in conjunction with a class) [Python]
[英]Creating class instance based on user input
假设我有这个 class
class employee(object)
def __init__(self,name):
return self.name
def something(self):
pass
...
导致
if __name__== "__main__":
name = input("what is your name ")
user1 = employee(name)
user1.something()
...
我希望 user1 实例是用户输入的名称,以便我可以拥有唯一的实例。 我如何 go 关于根据主要部分中的用户输入添加实例?
所以如果我运行程序并输入“tim”,我想要的结果是:
tim.name = "tim"
....
更新
好像上面还不清楚,让我试着用我的实际代码来解释一下:
所以我有这个 Spotify API:
class Spotify(object):
def __init__(self,user):
self.client_id = ''
self.client_secret = ''
def client_credentials(self):
pass
def get_header_token(self):
pass
...
到底,
if __name__== "__main__":
user = input("Enter username ")
user = Spotify(user)
user.request_author()
...
我试图将用户变量获取到用户提供的输入,例如如果用户输入“tim123”,则用户变量也将是 tim123。
所以我可以执行:
tim123.name
认为我的大脑完全一片空白,应该有一个简单的解决方案。 我确信这是非常不切实际的,但我不知道如果我需要的话我会怎么做。
改变
return self.name
至
self.name = name
如果名称== “主要”:
variable_name = raw_input("Enter variable name:") # User.
enters "tim123"
name = input("Enter Name")
globals()[variable_name] = employee(name)
tim123.name
根据您的评论,听起来您正在寻找exec()
或eval()
。 关联。 我的解决方案是执行以下操作:
class employee(object):
def __init__(self,name):
self.name = name
name = input("what is your name ")
exec(f"{name} = employee('{name}')")
(然后您将访问 joe.name,如果用户输入 joe 或 bob.name,如果用户输入 bob 等)。 或者,您可以使用locals()
或globals()
希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.