刚入门Python 在使用important时就遇到错误:TypeError: 'module' object is not callable
代码
from python import MyClass
from python.package_name import ClassMy
def main():
ab = MyClass('444')
cd = ClassMy('10')
print(cd.haha())
print(ab)
print('abc')
if __name__ == '__main__':
main()
pass
'''
@author: Administrator
'''
class MyClass(object):
'''
classdocs
'''
def __init__(self, params):
'''
Constructor
'''
pass
def test02(self):
return 'abc'
在运行时出现
根据是导入问题,但我使用的是eclipse进行追踪能正常追踪到 MyClass文件当中。百思不得其解,在网上查到在目录下添加__init__.py文件。
解决方案:代码修改为
from python.MyClass import MyClass
from python.package_name import ClassMy
def main():
ab = MyClass('444')
cd = ClassMy('10')
print(cd.haha())
print(ab)
print('abc')
if __name__ == '__main__':
main()
pass
正常执行过去。
错误原因,在MyClass.py中调用MyClass类,这个错误信息是说你试图把"MyClass"这个模块作为一个函数来调用,但它却无法调用。事实上,调用的应该是MyClass文件中MyClass这个类。
调用规则应该是这样的:
1.如果MyClass.py 中有Class MyClass(),要调用改函数中的方法,方法是:模块名(文件名).类名.方法名
2.如果调用的是MyClass.py文件中的def MyClass()函数:模块名(文件名).函数名
在使用java中总是类名和文件名相同致使错误产生,应该区分开来。
如果添加上述方式还不能解决,需要去查看python3的搜索路径
使用
sys.path查看,python是否找到了文件,在最上端添加
import sys,os
sys.path.append(sys.path[0])
然后执行