当你通过一个目的到print()
,它使用以下方法将其转换为字符串str()
功能。您可以创建一个__str__()
自定义对象上的方法来更改输出内容:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Person({self.name})'
您将得到以下结果:
>>>>>> from person import Person
>>> john = Person('John Cleese', 80)
>>> print(john)
Person(John Cleese)
这__str__()
方法旨在输出对象的人类可读版本。还有一个__repr__()
方法,用于对象的 Python 表示。有一个repr()
对应的函数str()
功能。如果你定义你的__repr__()
正确地,那么eval()
可以调用其结果来创建一个新对象。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Person({self.name})'
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
您将得到以下结果:
>>>>>> john = Person('John Cleese', age=80)
>>> repr(john)
"Person(name='John Cleese', age=80)"
>>> john2 = eval(repr(john))
>>> type(john2)
<class 'repr_person.Person'>
>>> id(john)
4472330616
>>> id(john2)
4472331736
一些集合对象,例如列表,调用repr()
当它们变成字符串时,它们的内容。这可以使打印到屏幕上的对象在其单独存在时与在列表中时表现不同:
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def __str__(self):
return self.username
def __repr__(self):
return f"User(username='{self.username}', password='{self.password}')"
您将得到以下结果:
>>>>>> from user import User
>>> u = User('jcleese', 'ParrotIsNoMore')
>>> str(u)
'jcleese'
>>> str([u])
"[User(username='jcleese', password='ParrotIsNoMore')]"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)