Python 中的所有内容都可以转换为字符串吗?
Is everything in Python castable to a string?
我正在尝试在 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>'
整个Python宇宙有什么东西不能投射到str吗?
Is everything in Python castable to a string?
不!
>>> 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!
来自 __str__
文档:
The default implementation defined by the built-in type object
calls object.__repr__().
和 object.__repr__
打印对象名称和地址(至少在 cpython 中)。这就是您的输出 '<__main__.Test object at 0x7f7e88a13630>'
的来源。 class 必须覆盖 __str__
并引发异常(或有错误)才能失败。没有理由这样做,而且您很难找到一个不是专门设计的。
我正在尝试在 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>'
整个Python宇宙有什么东西不能投射到str吗?
Is everything in Python castable to a string?
不!
>>> 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!
来自 __str__
文档:
The default implementation defined by the built-in type object
calls object.__repr__().
和 object.__repr__
打印对象名称和地址(至少在 cpython 中)。这就是您的输出 '<__main__.Test object at 0x7f7e88a13630>'
的来源。 class 必须覆盖 __str__
并引发异常(或有错误)才能失败。没有理由这样做,而且您很难找到一个不是专门设计的。