python错误:TypeError: 'module' object is not callable

TrainCorpusStructure.py 文件中的代码如下:

class TrainCorpusStructure:
    inputs = []

Demo.py中的代码如下:

from corpusProcess import TrainCorpusStructure

class Demo:
    def test(self):
        tcs = TrainCorpusStructure()
        tcs.inputs.append('fa')
        tcs.inputs.append('su')
        print(tcs.inputs)

        # TrainCorpusStructure.inputs.append('haohao')
        # TrainCorpusStructure.inputs.append('tttttttt')
        # print(TrainCorpusStructure.inputs)

if __name__ == '__main__':
    demo = Demo()
    demo.test()

其实想实现一个非常简单的功能,在TestFang.py文件中操作TrainCorpusStructure.py中的列表 inputs

但是遗憾的是提示有错误:

Traceback (most recent call last):
  File "/home/ubuntu/workspace/BioEvent/corpusProcess/TestFang.py", line 16, in <module>
    tf.test()
  File "/home/ubuntu/workspace/BioEvent/corpusProcess/TestFang.py", line 5, in test
    tcs = TrainCorpusStructure()
TypeError: 'module' object is not callable

于是在网上查询错误原因: 跟import导入机制有关

正确的写法有两种:

写法1:

from corpusProcess import TrainCorpusStructure

class Demo:
    def test(self):
        tcs = TrainCorpusStructure.TrainCorpusStructure()
        tcs.inputs.append('fang')
        tcs.inputs.append('su')
        print(tcs.inputs)

        # TrainCorpusStructure.inputs.append('haohao')
        # TrainCorpusStructure.inputs.append('tttttttt')
        # print(TrainCorpusStructure.inputs)

if __name__ == '__main__':
    demo = Demo()
    demo.test()

写法2:

import corpusProcess.TrainCorpusStructure as tc

class Demo:
    def test(self):
        tcs = tc.TrainCorpusStructure()
        tcs.inputs.append('fang')
        tcs.inputs.append('su')
        print(tcs.inputs)

        # TrainCorpusStructure.inputs.append('haohao')
        # TrainCorpusStructure.inputs.append('tttttttt')
        # print(TrainCorpusStructure.inputs)

if __name__ == '__main__':
    demo = Demo()
    demo.test()

仔细观察import导入的方式:明确一点的是,TrainCorpusStructure.py文件和TestDemo.py文件在同一个包里(即一个文件夹下)

写法1和写法2的区别有两点:

1,导入方式,写法1是:from Corpus import TrainCorpusStructure, 

                          写法2是:import corpusProcess.TrainCorpusStructure as tc

2, 调用方式不同,

写法1是: tcs = TrainCorpusStructure.TrainCorpusStructure(),

写法2是 tcs = tc.TrainCorpusStructure()

补充理解:其实明白了调用的规则非常容易理解,A.py 文件调用B.py文件的方法(注意不是函数)

规则:1,如果调用的是B.py文件中的方法,即B.py 中有Class B: 调用的原则是:模块名—类名—方法名

           2, 如果调用的是B.py文件中的函数:模块名—函数名

为了进一步测试:又写了一个类Wu.py

import corpusProcess.Demo as tfl
class Wu:
    def hehe(self):
        testF = tfl.Demo()
        testF.test()
        print('测试结果怎么样')
if __name__ == '__main__':
    ts = Wu()
    ts.hehe()

不明白的地方:如果我把Wu.py 命名为TestWu.py 或则 WuTest.py 的话, 运行Wu.py的时候就会进行单元测试而不会输出任何结果,我不明白为什么?待明确后补上

模块名如果有test或TEST等几个字符会进行单元测试,如果不是进行单元测试,不要使用'Test'这个字符

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当出现Python错误TypeError: 'module' object is not callable时,这意味着你试图将一个模块当作一个可调用的对象来使用。这通常是因为你使用了类似于模块名加括号的语法,例如module(),而模块本身并不是一个函数或可调用对象。要解决此错误,你需要检查你代码中的模块使用是否正确。确保你没有错误地将模块名当作函数或可调用对象来使用。你可以查看相关资料来了解更多关于模块和可调用对象的使用方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python错误TypeError: ‘moduleobject is not callable 解决方法](https://blog.csdn.net/qq_45816346/article/details/130684363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法](https://download.csdn.net/download/weixin_38692202/12873827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值