在 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('jiyik', 100)
print(bobby) # 👉️ Name: jiyik
第一个示例使用 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('jiyik', 100)
print(bobby) # 👉️ Name: jiyik
我们在类上定义了 __str__()
方法将其转换为字符串。
__str__()
方法由 str(object)
和内置的 format()
和 print()
函数调用,并返回对象的非正式字符串表示。
print()
函数返回类的 __str__()
方法的输出。
确保从 __str__()
方法返回一个字符串,否则会引发 TypeError。
例如,如果我们想从 __str__()
方法返回员工的工资,我们必须使用 str()
类将值转换为字符串。
class Employee():
def __init__(self, name, salary):
self.name = name
self.salary = salary
def __str__(self):
return str(self.salary)
bobby = Employee('jiyik', 100)
print(bobby) # 👉️ 100
如果我们在格式化的字符串文字中或与 str.format()
方法一起使用对象,则会调用 __str__()
方法。
class Employee():
def __init__(self, name, salary):
self.name = name
self.salary = salary
def __str__(self):
return str(self.salary)
bobby = Employee('jiyik', 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('jiyik', 100)
json_str = json.dumps(bobby.__dict__)
print(json_str) # 👉️ '{"name": "jiyik", "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('jiyik', 100)
print(bobby) # 👉️ 'jiyik'
__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()
函数时, datetime 类中的 __str__()
方法被调用并返回日期和时间的人类可读表示。
当我们使用
repr()
函数时,类的__repr__()
方法被调用并返回一个字符串,该字符串可用于重新创建对象的相同状态。
我们将字符串传递给 eval()
函数并创建了一个具有相同状态的日期时间对象。
请注意,以这种方式实现 __repr__()
方法并不总是必要或可能的。
大多数情况下,让 __str__()
方法返回人类可读的字符串就足够了。
相关文章
Python for 循环中的下一项
发布时间:2023/04/26 浏览次数:179 分类:Python
-
本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。
Python While 循环用户输入
发布时间:2023/04/26 浏览次数:148 分类:Python
-
我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。
在 Python 中将整数转换为罗马数字
发布时间:2023/04/26 浏览次数:87 分类:Python
-
本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
在 Python 中将罗马数字转换为整数
发布时间:2023/04/26 浏览次数:144 分类:Python
-
本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。
在 Python 中读取 gzip 文件
发布时间:2023/04/26 浏览次数:70 分类:Python
-
本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。
在 Python 中锁定文件
发布时间:2023/04/26 浏览次数:141 分类:Python
-
本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等
在 Python 中将 PDF 转换为文本
发布时间:2023/04/26 浏览次数:196 分类:Python
-
在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。
在 Python 中创建临时文件
发布时间:2023/04/26 浏览次数:53 分类:Python
-
本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。