python - 如何打印存储对象的对象列表的属性?
问题描述
我有一个用于创建列表对象并处理列表操作的列表类,并且我有另一个类“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>]
解决方案
实现__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__
推荐阅读
- angular - Angular 客户端 - ng 服务于卡住的构建,没有任何可能失败的日志
- linux - Linux终端:安装包时提前传递答案(或参数值)?
- system - 为什么哪个`executable software`和`software -v`指的是不同的东西?
- python - 在 gspread 中更新工作表名称的功能不起作用
- javascript - 如何让我们的动画一开始不执行,点击后才执行?
- php - pHp 问题:“等待本地主机”:可能是无限循环问题?
- python - Python 3 Pandas:计算列中出现相同的条目
- python - 对于一个简单的 API,我的 Pandas Read_JSON 出了什么问题?
- python - 我做了一个功能,在我的井字游戏中的每一步之后都会改变玩家,但它似乎不起作用
- automation - 运行 terraform init、terraform plan 或 apply 时出现无效字符错误