使用 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__()
方法并不总是必要或可能的。文章来源:https://www.toymoban.com/news/detail-475676.html
大多数情况下,让 __str__()
方法返回人类可读的字符串就足够了。文章来源地址https://www.toymoban.com/news/detail-475676.html
到了这里,关于在 Python 中将对象转换为字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!