由main.py传参至Dealdata_Function.py时,会出现TypeError: input() missing 1 required positional argument: 'listData'。但独立Dealdata_Function.py并不会出现问题。
main.py中的
AllDatalist = ['1-1-3', [["序号", "2", "2"], ['1', '1C', '2']]]
Assign_program().flashInput(AllDatalist)
Dealdata_Function.py中的
class Assign_program():
# 起始函数区域
def __init__(self):
print("开始分配模块......")
# 测试代码及输入源示例
# self.flashInput(['1-1-3', [["序号", "2", "2"], ['1', '1C', '2']]])
def flashInput(self, listData):
result = listData[0].split("-")
if result[1] == '1':
# 解析数据为'1', 跳转相应模块
Module_General_Demo1.input(listData)
elif result[1] == '2':
# 解析数据为'1', 跳转相应模块
Module_Ds_Demo2.input(listData)
else:
print(listData)
# 模块1
class Module_General_Demo1():
# 起始函数区域
def __init__(self):
pass
def input(self, listData):
print("开始处理数据......")
# 测试输入源信息
print(listData)
如果单独运行Dealdata_Function.py中Assign_program类中下面代码,是正常的。
self.flashInput(['1-1-3', [["序号", "2", "2"], ['1', '1C', '2']]])
但一运行main程序的代码就会出现问题,提出错误代码为
Traceback (most recent call last):
File "D:/*********************/main.py", line 698, in processDate
Assign_program().flashInput(AllDatalist)
File "D:\******************\Dealdata_Function.py", line 51, in flashInput
Module_General_Demo1.input(self.list)
TypeError: input() missing 1 required positional argument: 'listData'
请求各位指点,感激不尽!
if result[1] == '1':
# 解析数据为'1', 跳转相应模块
demo1 = Module_General_Demo1()
demo1.input(listData)
直接调用类要加括号 看图
将Dealdata_Function.py代码文件中的Module_General_Demo1.input(listData)改为 Module_General_Demo1().input(listData)就可以了,即先创建对象,再调用其方法。
然后Dealdata_Function.py第15行也和12行类似的话,也可以将Module_Ds_Demo2改为Module_Ds_Demo2()。
修改如下:
参考链接:
class Assign_program():
# 起始函数区域
def __init__(self):
print("开始分配模块......")
# 测试代码及输入源示例
# self.flashInput(['1-1-3', [["序号", "2", "2"], ['1', '1C', '2']]])
def flashInput(self, listData):
result = listData[0].split("-")
if result[1] == '1':
# 解析数据为'1', 跳转相应模块
# https://docs.python.org/zh-cn/3/tutorial/classes.html
# 先创建对象,再调用其对应的方法
Module_General_Demo1().input(listData)
elif result[1] == '2':
# 解析数据为'1', 跳转相应模块
Module_Ds_Demo2().input(listData)
else:
print(listData)
# 模块1
class Module_General_Demo1():
# 起始函数区域
def __init__(self):
pass
def input(self, listData):
print("开始处理数据......")
# 测试输入源信息
print(listData)
main.py
import Dealdata_Function
AllDatalist = ['1-1-3', [["序号", "2", "2"], ['1', '1C', '2']]]
Dealdata_Function.Assign_program().flashInput(AllDatalist)
问题点:类内部函数调用
分析思路:部分类函数,若不是静态函数,无法直接调用,需要先实例化后,才能调用.
解决办法:将类函数改为静态函数(推荐)或实例化对象后,再引用该实例的内部函数.
代码修改如下:
class Assign_program():
# 起始函数区域
def __init__(self):
print("开始分配模块......")
# 测试代码及输入源示例
# self.flashInput(['1-1-3', [["序号", "2", "2"], ['1', '1C', '2']]])
def flashInput(self, listData):
result = listData[0].split("-")
if result[1] == '1':
# 解析数据为'1', 跳转相应模块
Module_General_Demo1.input(listData)
elif result[1] == '2':
# 解析数据为'1', 跳转相应模块
Module_Ds_Demo2.input(listData)
else:
print(listData)
# 模块1
class Module_General_Demo1():
# 起始函数区域
def __init__(self):
pass
@staticmethod
def input(listData):
print("开始处理数据......")
# 测试输入源信息
print(listData)