【发布时间】:2011-09-14 18:21:34
【问题描述】:
假设我有f,它是类实例成员的函数:
class A:
def b(self):
print 'hey'
a = A()
f = a.b
如果我有同一个类的另一个实例,比如说c = A(),我如何仅使用f 和c 重建一个新的ff,所以调用ff() 将导致c.b() 而不是a.b()?
c = A()
ff = some_python_kungfu(f,c)
ff() #it is calling c.b()
【问题讨论】:
-
如果您选择更具描述性的变量名称,您的示例将不会那么混乱。 F THE BE THE C THE FF THE A 伤害了我的眼睛。 (我只是说!)
-
本应维护这一点的人——当然——讨厌你让
ff变得如此复杂,而c.b()本来会如此简单和清晰。这样做的原因是什么? -
@S.Lott 这样做的原因是复制具有存储在属性中的彼此功能的对象网络。我意识到,从长远来看,我必须找到一种不那么令人困惑的方法,但现在这似乎是更合乎逻辑的方法。
-
@jathanism 抱歉,下次我至少会使用官方占位符名称作为鸡蛋和垃圾邮件。
-
@ChAoS:与其浪费时间,不如实际发布您的实际问题:“如何将方法名称存储为属性”或“如何“复制”(克隆、深拷贝、浅复制)对象网络。”或实际适用于您的实际问题的东西。例如,
a.the_method= a.b在“复制”这个结构时可能比f=a.b聪明得多。
标签: python class function copy member