我有Person
和Address
类。每个Person
都持有一个Address
。
法典:
class Address:
def __init__(self, street, town, city, postcode, country):
self.street = street
self.town = town
self.city = city
self.postcode = postcode
self.country = country
def __str__(self):
return ("t" + "Street: " + self.street +
"nt" + "Town: " + self.town +
"nt" + "City: " + self.city +
"nt" + "Postcode: " + self.postcode +
"nt" + "Country:" + self.country)
class Person:
def __init__(self, name, age, phone, address):
# instance variables, unique to each Person
self.name = name
self.age = age
self.phone = phone
self.address = address
def __str__(self):
return "Name: " + self.name + "n" + "Age: " + self.age + "n" + "Phone: " + self.phone + "n" + "Address: " + self.address
但是,当我调用p
是Person
的print(p)
时,我得到以下异常:
File "phone2.7.py", line 30, in __str__
return "Name: " + self.name + "n" + "Age: " + self.age + "n" + "Phone: " + self.phone + "n" + "Address: " + self.address
TypeError: must be str, not Address
谁能确定这里的问题是什么?谢谢。
您正在尝试添加string
和object
。在 Address
类中重写 __str__
方法是不够的。您需要调用str()
方法。
"Address: " + str(self.address)
class Address:
def __init__(self, street, town, city, postcode, country):
self.street = street
self.town = town
self.city = city
self.postcode = postcode
self.country = country
def __str__(self):
return ("t" + "Street: " + self.street +
"nt" + "Town: " + self.town +
"nt" + "City: " + self.city +
"nt" + "Postcode: " + self.postcode +
"nt" + "Country:" + self.country)
class Person:
def __init__(self, name, age, phone, address):
# instance variables, unique to each Person
self.name = name
self.age = age
self.phone = phone
self.address = address
def __str__(self):
return "Name: " + str(self.name) + "n" + "Age: " + str(self.age) + "n" + "Phone: " + str(self.phone) + "n" + "Address: " + str(self.address)
p = 人(1,2,3,4(打印页
在使用+
连接之前,必须使用str()
函数将self.address
对象转换为字符串。
class Person:
def __str__(self):
return "Name: " + self.name + "n" + "Age: " + self.age + "n" + "Phone: " + self.phone + "n" + "Address: " + str(self.address)