Unbound method must be called with instance as first a
因此,我有一个类,其中一个类变量被设置为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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) |
但是,当我尝试这个的时候
1 2 | myBar_list = [Foo.Bar() for _ in range(x)] Foo.MyBar(myBar_list) |
类型错误:必须使用foo实例作为第一个参数调用未绑定的方法mybar()(改为get list)
这是因为
作为参考,两个
谢谢,
python中的实例方法必须使用
1 2 | def MyBar(self, a_list): ... |
另一方面,如果需要静态方法,则必须使用
1 2 3 | @staticmethod def MyBar(a_list): ... |
另请参见这个答案:python中的@staticmethod和@classmethod有什么区别?
声明
1 | Bar = MyFooFactory() |
正在分配在
如果要在方法内部分配它,语法是
1 | Foo.Bar = MyFooFactory() |
类主体内的范围规则有些令人惊讶。
这是因为你在
试试这个:
1 2 3 4 5 6 | class Foo: ... def MyBar(self, a_list): for l in a_list: Bar.MyBar(l) |
如果它应该是"未绑定"的方法,请使用