在 Python 中将对象转换为字符串

在 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__()方法应返回一个字符串,该字符串是对象的人类可读表示形式。

如果需要将类实例转换为 JSON 字符串,请使用实例上的属性。 __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__()方法返回一个人类可读的字符串就足够了。

发表评论