【问题标题】:Saving n individual objects to a class将 n 个单独的对象保存到一个类中
【发布时间】:2021-11-28 07:41:32
【问题描述】:

我正在制作电话簿,并试图找出我做错了什么。我已经定义了一个类“人”,它应该为每个输入他们的姓名和电话号码的人创建单独的“个人资料”。然后我有一个功能可以用作用户的 UI。当您尝试使用该名称“查找”配置文件时会出现问题。 Python 只是告诉我给定的字符串对象(名称)没有“数字”属性。

代码:

class people:
    def __init__(self, number):
        self.number = number

def main():
    while True:
        command = str(input(('phoneBook> ')))
        segment = command.split()

        if segment[0] == 'add':

            segment[1] = people(segment[2])
            print(segment[1].number)

        if segment[0] == 'lookup':

            print(segment[1].number)

        if segment[0] == 'quit':
            pass

非常感谢任何帮助,任何有关使用课程或解决此特定问题的提示都会很棒!

谢谢! - TheBigChung

【问题讨论】:

  • 因为您没有在第二个if statement 中将segment[1] 定义为people
  • 它不应该已经作为people bcs的对象存在吗?我之前定义的?那不会创建第二个对象吗? @Matiiss
  • @TheBigChung 当然,但随后循环从顶部重新开始并评估 segment = command.split()
  • 应该如此,例如,如果我键入: > 添加 Jones 106524。它应该首先添加数字:106524,其中 Jones 是对象变量。在第二个循环中我输入:>lookup Jones,它应该输出属性(数字):106524。@MathiasR.Jessen

标签: python list class if-statement


【解决方案1】:

在“查找”部分,您没有访问人员对象的数字属性,只是访问字符串上的数字属性。 做你想做的事情的一种方法是使用某些东西作为键(例如他们的名字)来保存所有人的对象的字典。

然后,当您有一个“查找”查询时,将段 [1] 映射到相关对象并返回它。 此外,您可以更改这些对象的属性并在以后访问它们。

【讨论】:

  • 我想我可能已经用你建议的方法(字典)弄明白了。我在people 内部创建了一个字典,并在people 内部创建了一个函数,该函数使用键segment[1] 添加了number。然后将名称和编号添加到我称为 people.dictionaryName[segment[1]] = segment[2] 的字典中并获得我简单调用的字典的输出: print(people.DictionaryName[segment1])
  • 还有一个问题,如果您不介意的话?我可以为字典键分配别名吗?
  • @TheBigChung 你到底是什么意思?
  • @Matiiss nvm,我想出了一个办法。我的意思是:如果您可以在字典中创建别名,以便您可以通过第一个给定键和第一个给定键的别名变量访问该键的值。
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2013-12-28
相关资源
最近更新 更多