Closed Sclock closed 2 years ago
这个是expected behavior。因为pydantic的BaseModel自己定义了__str__()
函数(你也看得出来,否则print不会出现x=0 y=1这种值)。对于自己定义了__str__()
函数的类型,objprint的默认行为是使用它定义好的__str__()
函数,也就是和print()
的效果一致。
如果不想用它定义的,可以加上honor_existing=False
。
op(obj_test, honor_existing=False)
<pyt_class 0x7fdd1d2a7ac0
.x = 0,
.y = 1
>
谢谢你在B站的支持~这个issue应该没有什么后续了,我就直接close啦。
哈哈 我昨天研究了一下 发现了一个方便的方法。 直接写一个
# 继承BaseModel 并重载__str__方法
@add_objprint
class prt_BaseModel(BaseModel):
pass
后续直接去继承自己写的prt_BaseModel
也可以达到相同的效果,直接print
就可以得到预期的输出。
不过不太清楚这么写会不会出现什么奇怪的问题。
当你可以控制class的源代码的时候,完全可以这么写,这就是会overload掉这个class的str函数。好处确实是后面直接可以用print来完成。
如题
他打印:
希望后续更新能够支持! (B站码农高天的视频我是期期都看,期期都三连)