为了账号安全,请及时绑定邮箱和手机立即绑定

python print函数的输出问题

python print函数的输出问题

HUX布斯 2019-05-21 09:49:23
classFoo(object):deff(self):passa=Foo()print(id(Foo.f),id(a.f))print(a.f,id(Foo.f),id(a.f))print(str(a.f),id(Foo.f),id(a.f))输出结果:200591856619220058854084562005918566192200588541005620059185661922005885408456问题:为什么三个输出会不相同?从结果可知:对象的__str__方法在print时没有被自行调用,那么要__str__还有什么用呢?
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

为什么Foo.f和a.f不同?简单的理解是:Foo.f接受一个参数,而a.f已经绑定了Foo.f的第一个参数是a,所以Foo.f和a.f是不同的,a.f是Foo.f绑定了参数的版本,这时Foo.f==a.f.__func__。
官方文档:
Whenaninstancemethodobjectiscreatedbyretrievingauser-definedfunctionobjectfromaclassviaoneofitsinstances,its_self_attributeistheinstance,andthemethodobjectissaidtobebound.Thenewmethod’s_func_attributeistheoriginalfunctionobject.
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 583 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信