如何在字典中包含类中的实例列表? [复制]

Posted

技术标签:

【中文标题】如何在字典中包含类中的实例列表? [复制]【英文标题】:How to include a list of instances from a class in a dictionary? [duplicate] 【发布时间】:2021-02-19 13:27:53 【问题描述】:

我创建了一个具有以下属性、方法和实例的自定义类:

class wizard:
  def __init__(self, first, last, pet, petname, patronus):
    self.first = first
    self.last = last
    self.pet = pet
    self.petname = petname
    self.patronus = patronus

  # Methods
  def fullname(self):
    return ' '.format(wizard1.first, wizard1.last)

  def tell_pet(self):
    return '    '.format(wizard1.first, wizard1.last,'\'s', wizard1.pet, 'is called', wizard1.petname)

  def expecto_patronum(self):
    return '  '.format('A', wizard1.patronus, "appears!")


# Instances
harry = wizard('Harry', 'Potter', 'Owl', 'Hedwig', 'Stag')
ron = wizard('Ron', 'Weasley', 'Owl', 'Pigwidgeon', 'Dog')
hermione = wizard('Hermione', 'Granger', 'Cat', 'Crookshanks', 'Otter')
malfoy = wizard('Draco', 'Malfoy', 'Owl', 'Niffler', 'Dragon')

现在我想创建一个存储类向导实例的字典。

hogwarts = harry, ron, hermione, malfoy

但是,我得到的输出如下:

<__main__.wizard object at 0x7fa2564d6898>, 
<__main__.wizard object at 0x7fa2564d61d0>, 
<__main__.wizard object at 0x7fa2564d6dd8>, 
<__main__.wizard object at 0x7fa2564bf7f0>

相反,我希望字典打印出存储在实例中的信息。 我该怎么做?

【问题讨论】:

另外,请注意hogwardsset,而不是您在问题中所述的dict 【参考方案1】:

您可以将__repr____str__ 方法放在类中,并使其在打印对象时返回您想要打印的内容。

一个例子是:

def __repr__(self):
    return f'I am self.first self.last. I have a pet self.pet, its name is self.petname. My patronus is self.patronus.'

【讨论】:

【参考方案2】:

为您的类函数添加一个表示。

def __repr__(self):
    print(f"First : self.first , Last : self.last ....")

【讨论】:

【参考方案3】:

您需要使用self 来使用您的类属性。

class wizard:
  def __init__(self, first, last, pet, petname, patronus):
    self.first = first
    self.last = last
    self.pet = pet
    self.petname = petname
    self.patronus = patronus

  # Methods
  def fullname(self):
    return ' '.format(self.first, self.last)

  def tell_pet(self):
    return '    '.format(self.first, self.last,'\'s', self.pet, 'is called', self.petname)

  def expecto_patronum(self):
    return '  '.format('A', self.patronus, "appears!")

您的字典实际上是set。您可以将您的实例放在 list 中并遍历它以打印您认为合适的值,如下所示:

hogwarts = [harry, ron, hermione, malfoy]
for student in hogwarts:
    print(', , '.format(student.fullname(), student.tell_pet(), student.expecto_patronus()))

【讨论】:

我很高兴@nonskill!如果这对您有用,请也将其标记为已接受。帮助我解决 ol' 代表点数。

以上是关于如何在字典中包含类中的实例列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在源文件中包含类而不是标题

如何按字典中的值对字典列表进行排序? [复制]

我们如何访问以列表形式存在的字典中的值? [复制]

如何将嵌套字典列表与它们的值中的公共键相加? [复制]

如何让我的主文件包含类的 .h fie?

我可以在一个 xhtml 页面中使用多个 xhtml 页面以及如何访问(引用它们)托管 bean 类中的那些页面吗? [复制]