为了更好地理解并且美观地展示我们定义的Python对象,我们可以自定义对象的打印方法。
在Python中,我们可以使用__str__()
或__repr__()
方法来实现自定义对象的打印方法。
__str__()
方法:返回字符串——对象的“友好”描述。当我们调用内置的print()
方法时,就会默认调用__str__()
方法。__repr__()
方法:返回字符串——对象的“开发者友好”描述。在开发中,我们通常使用这个方法来打印带有调试信息的对象。
下面是一个示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Name: {self.name}, Age: {self.age}"
def __repr__(self):
return f"Person({self.name}, {self.age})"
在上面的例子中,我们定义了一个Person
类,将人的名字和年龄存储在该类的属性中。然后,我们定义了__str__()
和__repr__()
方法来定制该类的打印方式。
p1 = Person("Tom", 25)
print(p1) # Name: Tom, Age: 25
print(repr(p1)) # Person(Tom, 25)
在这个例子中,我们创建了一个Person
对象并调用print()
方法。此时,__str__()
方法被调用,返回了像“Name: Tom, Age: 25”这样的字符串。
另一方面,我们调用repr()
方法,__repr__()
方法会被调用并返回想要打印的内容。在上面的例子中,我们返回了像“Person(Tom, 25)”这样的字符串。
另一个示例:
class Book:
def __init__(self, title, author, price):
self.title = title
self.author = author
self.price = price
def __str__(self):
return f"{self.title}, by {self.author}, ${self.price}"
def __repr__(self):
return f"Book('{self.title}', '{self.author}', '{self.price}')"
在这个例子中,我们定义了一个Book
类,该类存储有关一本书的信息(书名,作者和价格)。然后,我们定义了__str__()
和__repr__()
方法来控制如何打印该类的内容。
b1 = Book("Python for Beginners", "John Smith", 25.99)
print(b1) # Python for Beginners, by John Smith, $25.99
print(repr(b1)) # Book('Python for Beginners', 'John Smith', '25.99')
在这个例子中,我们创建了一个Book
对象并调用print()
方法。__str__()
方法被调用并返回像“Python for Beginners, by John Smith, $25.99”这样的字符串。
另一方面,我们调用repr()
方法,__repr__()
方法会被调用并返回想要打印的内容。在上面的例子中,我们返回了像“Book('Python for Beginners', 'John Smith', '25.99')”这样的字符串,其中的单引号可以确保该字符串可以被Python直接解释。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 自定义对象的打印方法 - Python技术站