首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字典中包含来自类的实例列表?

如何在字典中包含来自类的实例列表?
EN

Stack Overflow用户
提问于 2020-11-06 20:07:43
回答 3查看 134关注 0票数 2

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

代码语言:javascript
复制
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')

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

代码语言:javascript
复制
hogwarts = {harry, ron, hermione, malfoy}

然而,作为输出,我得到的只是以下内容:

代码语言:javascript
复制
{<__main__.wizard object at 0x7fa2564d6898>, 
<__main__.wizard object at 0x7fa2564d61d0>, 
<__main__.wizard object at 0x7fa2564d6dd8>, 
<__main__.wizard object at 0x7fa2564bf7f0>}

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-06 20:16:47

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

代码语言:javascript
复制
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中,并遍历它以打印您认为合适的值,如下所示:

代码语言:javascript
复制
hogwarts = [harry, ron, hermione, malfoy]
for student in hogwarts:
    print('{}, {}, {}'.format(student.fullname(), student.tell_pet(), student.expecto_patronus()))
票数 1
EN

Stack Overflow用户

发布于 2020-11-06 20:15:19

向类函数中添加表示形式。

代码语言:javascript
复制
def __repr__(self):
    print(f"First : {self.first }, Last : {self.last} ....")
票数 2
EN

Stack Overflow用户

发布于 2020-11-06 20:15:11

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

一个例子是:

代码语言:javascript
复制
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}.'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64720954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档