Python 中的所有内容都可以转换为字符串吗?

sne*_*lan 2 python theory string casting type-conversion

我正在尝试在 Python 中找到一个无法转换为字符串的示例。

>>> str(None)
'None'
>>> str(False)
'False'
>>> str(5)
'5'
>>> str(object)
"<class 'object'>"
>>> class Test:
...     pass
...
>>> str(Test)
"<class '__main__.Test'>"
>>> str(Test())
'<__main__.Test object at 0x7f7e88a13630>'
Run Code Online (Sandbox Code Playgroud)

整个 Python 世界有什么不能转换为str 的吗?

Ada*_*ith 5

Python 中的所有内容都可以转换为字符串吗?

不!

>>> class MyObject():
...     def __str__(self):
...         raise NotImplementedError("You can't string me!")
...
>>> str(MyObject())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __str__
NotImplementedError: You can't string me!
Run Code Online (Sandbox Code Playgroud)

  • @sneilan,因为所有东西都继承自“object”,并且“object”定义了一个行为良好(如果几乎无用)的“__str__”,所以没有任何行为不良的对象没有定义自己的不良行为。我不知道任何 stdlib 类型在您尝试对它们进行字符串化时会抛出错误(但它们可能存在!) (2认同)