【发布时间】:2015-09-03 05:47:09
【问题描述】:
所以,我有一个类,其中一个类变量在__init__ 方法中设置为类工厂的输出,如下所示:
def MyFooFactory():
def __init__(self, *args):
# Do __init__ stuff
def MyBar(myFoo_obj):
print "MyBar"
newclass = type("MyFoo", tuple(object), {"__init__": __init__, "MyBar": MyBar} )
return newclass
class Foo:
Bar = 0
def __init__(self):
if (type(Foo.Bar) is int):
Bar = MyFooFactory()
def MyBar(a_list):
for l in a_list:
Bar.MyBar(l)
但是,当我尝试这个时
myBar_list = [Foo.Bar() for _ in range(x)]
Foo.MyBar(myBar_list)
TypeError: 未绑定方法 MyBar() 必须以 Foo 实例作为第一个参数调用(改为获取列表)
发生这种情况是因为MyBar 在Foo 和MyFoo 中具有相同的名称,还是这里还有其他事情?
作为参考,MyBar 方法都应该是未绑定的。
谢谢,
【问题讨论】: