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

方法如何透明地查看函数属性

方法如何透明地查看函数属性

慕丝7291255 2021-07-30 00:24:14
我最近编写了一些需要标记属性的函数:def fn1(): passfn1.mark = True实际的标记是由装饰者完成的,但它既不在这里也不在那里。我担心的是,当我以相同的方式标记类中的方法时,在绑定方法时标记将不可见:class A:    def meth1(): pass    meth1.mark = True但实际上该属性是可见的:>>> fn1.markTrue>>> A.meth1.markTrue>>> A().meth1.markTrue但是,不能在绑定方法中分配或删除属性,因为它可以在函数中:>>> A().meth1.mark = FalseAttributeError: 'method' object has no attribute 'mark'>>> del A().meth1.markAttributeError: 'method' object has no attribute 'mark'方法的属性在绑定时如何使其可见?
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

方法对象实现__getattribute__将未知属性的属性访问委托给底层函数对象。__setattr__但是,他们不委托,这就是分配失败的原因。如果你想看代码,它method_getattroObjects/classobject.c.


查看完整回答
反对 回复 2021-08-03
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

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