this funstion works well :
def create_layer(layers_list,position=0,layer_obj=None):
if not layer_obj:
layer_obj,created = Layer.objects.get_or_create(name=layers_list[0])
return create_layer(layers_list,position,layer_obj)
else:
position +=1
if position < len(layers_list) :
obj,created = Layer.objects.get_or_create(name=layers_list[position],parent=layer_obj)
return create_layer(layers_list,position,obj)
else:
return layer_obj
But when I put it into class, I got error :
create_layer() takes at most 4 arguments (5 given)
class Test():
def test1(self):
self.create_layer(layers_list)
def create_layer(self,layers_list,position=0,layer_obj=None):
if not layer_obj:
layer_obj,created = Layer.objects.get_or_create(name=layers_list[0])
return self.create_layer(self,layers_list,position,layer_obj)
else:
position +=1
if position < len(layers_list) :
obj,created = Layer.objects.get_or_create(name=layers_list[position],parent=layer_obj)
return self.create_layer(self,layers_list,position,obj)
else:
return layer_obj
What happened??
How can I fix it ??
Don't pass self
to self.create_layer
when calling it recursively. This is done for you by Python when it calls a method of a class instance. What happens here is that Python adds another self
to the front of your argument list, thereby making it one argument too many.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.