先看报错代码(为了复现问题,写了个简单代码)
l1 = []
class Test:
def __init__(self, l1):
self.l1 = l1
def l1(self):
print("test")
if __name__ == '__main__':
Test(l1).l1()
报错:
TypeError: 'list' object is not callable
原因:
类的初始化__init__方法里的变量名和类里的方法名重复,导致最先识别l1是在调用变量对象而不是类方法,因此报错如上(列表对象不能被调用)
解决:
修改类方法名或者初始化的__init__里的self.l1变量名,不一致即可
l1 = []
class Test:
def __init__(self, l11):
self.l11 = l11
def l111(self):
print("test")
if __name__ == '__main__':
Test(l1).l111()
运行:
test