繁体   English   中英

根据用户输入创建 class 实例

[英]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.

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