我正在学习flask,现在我正在阅读flask代码。
我遇到了一个我不能完全理解的障碍。你知道吗
def implements_to_string(cls):
cls.__unicode__ = cls.__str__
cls.__str__ = lambda x: x.__unicode__().encode('utf-8')
return cls
@implements_to_string
class Test(object):
def __init__ (self):
pass
test = Test()
print(test.__str__)
print(test.__str__())
第一次打印将lambda方法显示为:
<bound method Test.<lambda> of <__main__.Test object at 0x7f98d70d1210>>
第二条:
<__main__.Test object at 0x7fcc4394d210>
那么funcimplements_to_string
中lambda中的x
何时成为cls
对象呢?
这只是我现在需要记住的内在机制吗?
或者背后还有什么需要知道的?你知道吗
根据文件:
您对
implements_to_string
的实现与我这里的类似:当您使用
print(test.__str__)
时,您正在打印方法本身,并打印其表示形式。你知道吗但是当您使用
print(test.__str__())
时,您首先执行函数并打印方法返回的内容。你知道吗相关问题 更多 >
编程相关推荐