Closed Sclock closed 2 years ago
op(temp_a)是不可能输出temp_a
的,因为temp_a
是个class
(type
),而<temp_a ..>
的形式打印的应该是个temp_a
object,这里明显不应该混淆。
@add_objprint
也是一个道理,它改变的是object的输出,而不是class本身。
就像下面的代码:
class A:
def func(self):
pass
op(A)
op(A())
你觉得打印的内容应该一样么……
还有,当你op
一个自己定义了__str__
的object的时候,op
的默认behavior是尊重它的__str__
,而class本身是个type
object,type
是有自己的__str__
函数的。如果你想用op
,你可以op(temp_a, honor_existing=False)
,就会看到一大串东西。
依然,它打印的是一个class,也就是type,而不是它的object。
好的 受教了
测试代码:
输出:
符合直觉的结果应该是:
输出: