当前位置: 首页 > 面试题库 >

具有用户输入的类的示例

笪建章
2023-03-14
问题内容

已关闭 。这个问题需要细节或说明。它当前不接受答案。

想改善这个问题吗? 添加详细信息并通过编辑此帖子来澄清问题。

5年前关闭。

改善这个问题

在(尝试)学习类时,我在网上看到的大多数示例中,类的实例都是由程序员定义的。有什么方法可以创建类的实例,其中由用户定义存储该类的变量?

这是另一个SO问题中的对象的示例:

class StackOverflowUser:
    def __init__(self, name, userid, rep): 
        self.name = name
        self.userid = userid
        self.rep = rep

dave = StackOverflowUser("Dave Webb",3171,500)

如何进行更改,以便用户可以基于类创建实例?


问题答案:

大致有两种方式可以做到这一点:

  1. 将输入完全放在类之外,然后__init__像往常一样将其传递给:
    user = StackOverflowUser(
    raw_input('Name: '),
    int(raw_input('User ID: ')), 
    int(raw_input('Reputation: ')),
    

    )

可以说这是一个更简单的概念;要么

  1. 在类中进行输入,例如使用类方法:
    class StackOverflowUser:
    
    def __init__(self, name, userid, rep): 
        self.name = name
        self.userid = userid
        self.rep = rep
    
    @classmethod
    def from_input(cls):
        return cls(
            raw_input('Name: '),
            int(raw_input('User ID: ')), 
            int(raw_input('Reputation: ')),
        )
    

然后这样称呼:

    user = StackOverflowUser.from_input()

我更喜欢后者,因为它在所属的类中保留了必要的输入逻辑,并且请注意,它们当前都没有对输入的任何验证(请参见例如,要求用户提供输入,直到他们给出有效的响应为止)。

如果您想拥有多个用户,则可以使用唯一键将它们保存在字典中(例如,他们的userid-请注意,Stack Overflow允许多个用户使用相同的名称,因此
不会 是唯一的):

users = {}
for _ in range(10):  # create 10 users
    user = StackOverflowUser.from_input()  # from user input
    users[user.userid] = user  # and store them in the dictionary

然后,每个用户都可以通过访问users[id_of_user]。您可以添加检查以拒绝具有重复ID的用户,如下所示:

if user.userid in users:
    raise ValueError('duplicate ID')


 类似资料:
  • 问题内容: 我正在尝试为需要用户输入的方法创建一些JUnit测试。被测方法看起来类似于以下方法: 有没有一种方法可以自动将程序传递给int而不是我或其他人在JUnit测试方法中手动执行此操作?像模拟用户输入一样? 提前致谢。 问题答案: 你可以通过调用来用自己的流替换可以是一个字节数组: 通过将IN和OUT作为参数传递,不同的方法可以使此方法更具可测试性:

  • 我有一个可行的解决方案,我在Google Drive中搜索文件,并要求Google Drive使用打开它们,这会生成如下链接: 然后我解析链接并生成如下意图: 这在配置了一个gmail帐户的设备上非常有效,但是如果设备碰巧配置了两个或更多的gmail帐户,那么Google Drive会一直询问用户希望使用哪个帐户来打开文件。 在链接中是否有建议将哪个帐户用于Google云端硬盘? 附言:我试图将以

  • 这个问题与这个问题很接近,但有一个主要区别。 可能的要求: (1) 我想生成一个带有通用返回值的Java函数。 (2)输入参数列表总是相同的。( (3) 函数应知道预期的返回参数类型。 我的尝试: 因为没有生成的实例,所以它不起作用。尝试使用

  • 当用户输入字符串(例如“”)时,程序应该给出输出“”,然后提示用户键入有效输入。当我键入字符串时,我会在线程“main”java.util.InputMismatchException中得到错误消息

  • 问题内容: 我下面有以下代码示例。你可以在其中输入的命令,即回显结果。但是,先读后。其他输出流不起作用? 为什么会这样或我做错了什么?我的最终目标是创建一个线程计划任务,该任务定期执行对/ bash的命令,因此必须一前一后工作,而不能停止工作。我也一直在经历错误的任何想法? 谢谢。 问题答案: 首先,我建议更换生产线 与线 ProcessBuilder是Java 5中的新增功能,它使运行外部进程更

  • 问题内容: 所以我有我的TagStatus模型。我正在尝试为此制作一个ModelForm。但是,我的表单要求使用{{tag.name}}填充隐藏的输入。我一直在浏览文档,但不知道如何使标记字段成为隐藏的输入。也许ModelForm不是要走的路? models.py: django views.py: 模板: 我将如何通过Django ModelForm进行隐藏输入,然后通过模板进行填充? 问题答案

  • 问题内容: 我遇到一种情况(在硒测试期间),在这种情况下,用户将收到安全代码。然后,用户必须先输入安全密码,然后才能继续操作。 我不太确定如何获得用户输入的值。我浏览了硒文档,并提出了这个建议。不幸的是,它并不是很有效。 有人可以指出我正确的方向吗? 问题答案: 似乎您必须先接受并关闭提示,然后才能存储和使用该值

  • 问题内容: 我有一种情况(在selenium测试期间),在这种情况下,用户将收到安全代码。然后,用户必须先输入安全代码,然后才能继续操作。 我不太确定如何获得用户输入的值。我浏览了selenium文档,并提出了这个建议。不幸的是,它并不是很有效。 有人可以指出我正确的方向吗? 问题答案: 似乎您必须先接受并关闭提示,然后才能存储和使用该值