TypeError:my_function()需要正好4个参数(给出5个)
我不知道它为什么不起作用;它返回此错误:TypeError:my_function()需要正好4个参数(给出5个)
TypeError: create_selected_properties_json_doc() takes exactly 4 arguments (5 given)
代码:
def another_function():
confirmed_diagnostic_keys = [some, keys]
generalized_stage_keys = [some, keys]
stage_acording_to_uicc_keys = [some, keys]
self.create_selected_properties_json_doc(self, form, 'hallelluja', confirmed_diagnostic_keys)
self.create_selected_properties_json_doc(self, form, 'mashalla', generalized_stage_keys)
self.create_selected_properties_json_doc(self, form, "heheeyy", stage_acording_to_uicc_keys)
def create_selected_properties_json_doc(self, form, json_obj_key, form_element_ids):
# Create an empty dictionary
json_obj[json_obj_key] = {}
#Loop through the keys in list
for key in form_element_ids:
#check if the keys matches any of form's key
if key in form:
#Add values of form elements to the dictionary properties
json_obj[json_obj_key][key] = form[key]
else:
# Otherwise add "Jo" to the respective dictionary property
json_obj[json_obj_key][key] = 'NO'
return json_obj
不通过self
作为第一个参数:
self.create_selected_properties_json_doc(form, 'hallelluja', confirmed_diagnostic_keys)
self.create_selected_properties_json_doc
是bound method。当被调用时,self
会自动作为第一个参数传递给create_selected_properties_json_doc
,所以您应该只传递其余的参数。
为了避免NameError: global name 'json_obj' is not defined
,您需要定义json_obj
在create_selected_properties_json_doc
:
def create_selected_properties_json_doc(self, form, json_obj_key, form_element_ids):
json_obj = dict()
# Create an empty dictionary
json_obj[json_obj_key] = {}
存储由create_selected_properties_json_doc
在another_function
返回的字典,它分配给一个变量:
def another_function():
confirmed_diagnostic_keys = [some, keys]
generalized_stage_keys = [some, keys]
stage_acording_to_uicc_keys = [some, keys]
json1 = self.create_selected_properties_json_doc(
form, 'hallelluja', confirmed_diagnostic_keys)
json2 = self.create_selected_properties_json_doc(
form, 'mashalla', generalized_stage_keys)
json2 = self.create_selected_properties_json_doc(
form, "heheeyy", stage_acording_to_uicc_keys)
我必须在函数another_function()返回什么值,因为如果我返回json_obj它显示我的错误:NameError:全局名称'json_obj'没有定义,因为自我参数我没有paas在函数create_selected_properties_json_doc() – KosovoDev 2014-09-12 12:35:12
什么是'json_obj'?它没有在您发布的任何代码中定义。 – unutbu 2014-09-12 12:45:03
json_obj是函数create_selected_properties_json_doc()的返回值,这意味着它是一个json对象。所以我不知道如何在another_function()返回json_obj – KosovoDev 2014-09-12 12:49:00
当传递参数给一个函数时避免传递自我(这是对象引用并自动传递自我s隐式传递,你不需要手动完成。
例如:它只是为了让你明白。
def binary_search(self,input_array,left_index,right_index):
mid=left_index+(right_index-left_index)/2
return mid
def call_function(self,*arg):
self.binary_search(input_array,left_index,right_index) #self is not
passed
'self'隐式传递,您不需要手动执行 - 您实际上正在调用'Class.method(self,self,...)'。 – jonrsharpe 2014-09-12 10:32:38