在 Python 中将对象转换为字符串
Convert an Object to a String in Python
使用str()
该类将对象转换为字符串,例如
result = str(my_object)
. 该类str()
返回给定对象的字符串版本。
my_int = 42 # ✅ Convert an object to a string result = str(my_int) print(result) # 👉️ '42' print(type(result)) # 👉️ <class 'str'> print(isinstance(result, str)) # 👉️ True # ------------------------------------------------ # ✅ Convert a class object to a string class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return f'Name: {self.name}' bobby = Employee('bobbyhadz', 100) print(bobby) # 👉️ Name: bobbyhadz
第一个示例使用str()
该类将对象转换为字符串。
str类接受一个对象并返回该对象的字符串版本。
my_obj = 3.14 result = str(my_obj) print(result) # 👉️ '3.14' print(type(result)) # 👉️ <class 'str'>
如果您需要将类对象转换为字符串,请实现该__str__()
方法。
在 Python 中将类对象转换为字符串
使用该__str__()
方法将对象转换为字符串。该__str__()
方法由str(object)
内置函数format()
和print()
函数调用,并返回对象的非正式字符串表示形式。
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return f'Name: {self.name}' bobby = Employee('bobbyhadz', 100) print(bobby) # 👉️ Name: bobbyhadz
我们__str__()
在类上定义了将其转换为字符串的方法。
_
_ str _ _ ()
方法由内置str(object)
函数format()
和print()
函数调用,并返回对象的非正式字符串表示形式。
print()
函数返回类方法的输出。 __str__()
确保从该方法返回一个字符串__str__()
,否则
TypeError
会引发 a。
例如,如果我们想从__str__()
方法中返回员工的薪水,我们必须使用str()
类将值转换为字符串。
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return str(self.salary) bobby = Employee('bobbyhadz', 100) print(bobby) # 👉️ 100
如果您在格式化字符串文字中或与该方法__str__()
一起使用该对象,则会调用该str.format()
方法。
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return str(self.salary) bobby = Employee('bobbyhadz', 100) result = f'Current salary: {bobby}' print(result) # 👉️ Current salary: 100
该__str__()
方法应返回一个字符串,该字符串是对象的人类可读表示形式。
__dict__
import json class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return str(self.salary) bobby = Employee('bobbyhadz', 100) json_str = json.dumps(bobby.__dict__) print(json_str) # 👉️ '{"name": "bobbyhadz", "salary": 100}'
还有一种__repr__()
方法可以用类似的方法来使用
__str__()
。
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __repr__(self): return self.name bobby = Employee('bobbyhadz', 100) print(bobby) # 👉️ 'bobbyhadz'
_
_ repr _ _
方法由函数调用,通常repr()
用于获取字符串,该字符串可用于使用eval()
函数重建对象。
__str__()
定义方法,但已定义,则使用 的输出。 __repr__()
__repr__()
__str__()
说明和之间区别的一个好方法__repr__()
是使用datetime.now()
方法。
import datetime # 👇️ using __str__() print(datetime.datetime.now()) # 👉️ 2022-09-08 14:29:05.719749 # 👇️ using __repr__() # 👉️ datetime.datetime(2022, 9, 8, 14, 29, 5, 719769) print(repr(datetime.datetime.now())) result = eval('datetime.datetime(2022, 9, 8, 14, 29, 5, 719769)') print(result) # 👉️ 2022-09-08 14:29:05.719769
当我们使用这个print()
函数时,类__str__()
中的方法datetime
被调用并返回一个人类可读的日期和时间表示。
repr()
函数时,__repr__()
类的方法被调用并返回一个字符串,该字符串可用于重新创建对象的相同状态。我们将字符串传递给eval()
函数并创建了一个datetime
具有相同状态的对象。
请注意,__repr__()
以这种方式实施该方法并不总是必要或可能的。
大多数时候让__str__()
方法返回一个人类可读的字符串就足够了。