我试图了解如何创建具有方法的对象,这些方法由字符串列表定义。我不知道,这是怎么称呼的,所以我现在很难找到搜索。我正在研究闭包,看看装饰器和描述符,现在我很困惑。
我能够将我的问题归结为下面的~20行代码。所以我定义了这个Dyn
类,最终会根据__init__
调用中给出的名称来设置方法。它有效,但由于某些原因,这些方法都是做同样的
import types
class Dyn(object):
def __init__(self, things=['foo', 'bar', 'baz']):
for t in things:
def method(self, number):
print number*t
setattr(self, t, types.MethodType(method, self))
当我尝试这个时,例如像这样:
first = Dyn()
first.foo(3)
first.bar(1)
结果是:
bazbazbaz
baz
而不是:
foofoofoo
bar
正如我所料。
任何人都可以向我推进正确的方向吗?