如何在字典中包含类中的实例列表? [复制]
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>
相反,我希望字典打印出存储在实例中的信息。 我该怎么做?
【问题讨论】:
另外,请注意hogwards
是set
,而不是您在问题中所述的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' 代表点数。以上是关于如何在字典中包含类中的实例列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我可以在一个 xhtml 页面中使用多个 xhtml 页面以及如何访问(引用它们)托管 bean 类中的那些页面吗? [复制]