【发布时间】:2011-12-15 00:45:21
【问题描述】:
在下文中,setattr 在第一次调用中成功,但在第二次调用中失败,其中:
AttributeError: 'method' object has no attribute 'i'
为什么会这样,有没有办法在方法上设置一个属性,使其只存在于一个实例上,而不是类的每个实例上?
class c:
def m(self):
print(type(c.m))
setattr(c.m, 'i', 0)
print(type(self.m))
setattr(self.m, 'i', 0)
Python 3.2.2
【问题讨论】:
-
为什么需要这个?为什么不使用实例属性?如果您希望每个方法有很多属性,例如
self.m_i = 0或self.m_data = { 'i': 0 }。 -
@eye 感谢您的关注。我正在尝试按照stackoverflow.com/questions/279561/… 实现静态函数变量,但它也可以与方法一起正常工作。我有大部分的实现,但这是一个症结所在。不过,可能有更好的方法来解决原始问题。
标签: python methods python-3.x setattr