我有一个用于创建列表对象并处理列表动作的列表类,还有一个用于创建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__
加上__repr__
或Dog
,因此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__
的更多信息,请参见here