【问题标题】:converting string to my datatype in Python在 Python 中将字符串转换为我的数据类型
【发布时间】:2021-06-14 10:15:26
【问题描述】:

假设我有一个简单的控制台程序,用户可以在其中输入一些文本。 假设我有如下课程:

class A:
    def __init__(self, some_string):
        self.lens=len(some_string)
    
    def PrintLen(self):
        print(self.lens)

假设用户输入了一些只包含一个单词的文本(比如说 - 'word')。 我的问题是如何使'word' 成为class A 的实例,我可以使用word.PrintLen() 而不会出现任何错误?我想我应该实现一些将字符串对象转换为我的类对象的函数,但我不知道如何实现。

【问题讨论】:

  • 最好将用户输入用作字典的键,并将新实例用作值。您遇到的问题是,当您在代码中键入“word.Printitem()”时,您已经确定了实例的名称。

标签: python-3.x string


【解决方案1】:

一个更好的解决方案,而不是尝试根据用户输入的任何内容创建一个新变量,使用字典会更“明智”。

字典包含成对的键和值,因此您的键将是输入值,而值将是类的实例。

你的代码应该是这样的:

class A:
    def __init__(self, some_string):
        self.lens=len(some_string)

    def PrintLen(self):
        print(self.lens)

instances = {}
name = input('WHat is your name >')
instances[name] = A(name)

然后你会像这样使用它:

instances[name].PrintLen()

【讨论】:

    【解决方案2】:

    我在这里感觉到了一些反模式。根据您的问题,您希望做的关键事情是将用户的输入设置为变量的名称 - 您的类的实例。我不知道这是否一定是为您的用例做的最好方法。也许最好始终将变量命名为相同的名称,但在您的 A 类中添加一个 self.string 参数。

    如果您确实想这样做,请参阅here。你会写

    in_string = raw_input("Enter string:")
    locals()[in_string] = A(in_string)
    

    然后您可以按照您的描述调用 PrintLen 函数。

    【讨论】:

    • 像这样使用当地人是可怕的 - uggh。
    猜你喜欢
    • 2018-07-17
    • 1970-01-01
    • 2013-10-16
    • 2011-12-07
    • 2016-11-14
    • 1970-01-01
    • 2020-06-20
    • 2015-01-29
    相关资源
    最近更新 更多