Python 打印对象 - TypeError:必须是 str,而不是 Address



我有PersonAddress类。每个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

但是,当我调用pPersonprint(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

谁能确定这里的问题是什么?谢谢。

您正在尝试添加stringobject。在 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)

最新更新