首页 > 解决方案 > 如何打印存储对象的对象列表的属性?

问题描述

我有一个用于创建列表对象并处理列表操作的列表类,并且我有另一个类“Dog”来创建 Dog 对象。但是,在将“Dog”类型的对象附加到“Dogslist”类型的列表后,我无法打印“Dog”类的属性(姓名和年龄)。而是通过打印列表来打印对象的地址。如何打印列表中所有狗的姓名和年龄?

class Dogslist():

  def __init__(self):
    self.lista = []

  def append(self, object):
    self.lista.append(object)

  def delete(self):
    pass

  def showlist(self):
    pass


class Dog:

  def __init__(self, name, age):
    self.__name = name
    self.__age = age

  def description(self):
    return self.__name, self.__age


a=Dog("Geralt", 10)
b=Dog("Vesemir", 13)

doglist = Dogslist()

doglist.append(a)
doglist.append(b)
print(doglist.lista)

输出显示以下内容指向对象的地址:

[<__main__.Dog object at 0x7f25ed30c0a0>, <__main__.Dog object
 at 0x7f25ed2f18b0>]

标签: pythonoop

解决方案


实现__str__or __repr__forDog所以 Python 知道如何表示它。

class Dog:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
    def __repr__(self):
        return f"Dog({self.__name}, {self.__age})"
    def __str__(self):
        return f"Woof! I'm {self.__name}, and I'm {self.__age} years old!"

更多信息可以在这里__str__找到__repr__


推荐阅读