zoukankan      html  css  js  c++  java
  • TypeError: 'module' object is not callable 原因分析

    程序代码
    class Person:
    #constructor
    def __init__(self,name,sex):
    self.Name = name
    self.Sex = sex
    def ToString(self):
    return 'Name:'+self.Name+',Sex:'+self.Sex
    在IDLE中报错:
    >>> import Person
    >>> per = Person('dnawo','man')
    Traceback (most recent call last):
    File "<pyshell#2>", line 1, in <module>
    per = Person('dnawo','man')
    TypeError: 'module' object is not callable
    原因分析:
    Python导入模块的方法有两种:import module 和 from module import,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不要。
    正确的代码:
    >>> import Person
    >>> person = Person.Person('dnawo','man')
    >>> print person.Name

    >>> from Person import *
    >>> person = Person('dnawo','man')
    >>> print person.Name

    =============下面这个解法更能体现问题所在,就是模块的路径问题

    问题:


    我不能确定我为什么得到这个错误:

    1. ************************************************** **************
    2. Traceback (most recent call last):
    3. File "my.py" , line 3 , in ?
    4. urlparse( 'http://www.cwi.nl:80/%7Eguido/Python.html')
    5. TypeError: 'module' object is not callable
    6. **************************************************

    源代码如下:

    1. import urlparse
    2. urlparse( 'http://www.cwi.nl:80/%7Eguido/Python.html')

    答复:

    "TypeError: 'module' object is not callable"这个信息是说你试图把"urlparse"这个模块作为一个函数来调用,但它却无法调用。

    urlparse这个模块包含urlparse 和 urlsplit等函数。我把urlsplit也拖了进来,它的名字和模块名不同。这个可能能帮助你发现问题。以下是调用它们的两种方法。

    (1)

    1. >>> import urlparse
    2. >>> urlparse.urlparse( 'http://www.cwi.nl:80/%7Eguido/Python.html')
    3. ( 'http' , 'www.cwi.nl:80' , '/%7Eguido/Python.html', '' , '' , '' )
    4. >>> urlparse.urlsplit( 'http://www.cwi.nl:80/%7Eguido/Python.html')
    5. ( 'http' , 'www.cwi.nl:80' , '/%7Eguido/Python.html', '' , '' )
    6. >>>

    (2)

    1. >>> from urlparse import urlparse, urlsplit
    2. >>> urlparse( 'http://www.cwi.nl:80/%7Eguido/Python.html')
    3. ( 'http' , 'www.cwi.nl:80' , '/%7Eguido/Python.html', '' , '' , '' )
    4. >>> urlsplit( 'http://www.cwi.nl:80/%7Eguido/Python.html')
    5. ( 'http' , 'www.cwi.nl:80' , '/%7Eguido/Python.html', '' , '' )
    6. >>>

    方法1可能更适合你。

  • 相关阅读:
    Go内建容器篇
    Go基础语法篇
    【区块链】比特币Merkle树
    【区块链】Fabric 术语
    Apache旗下项目
    【区块链】Fabric0.6 与1.0
    rc.local不起作用
    命令行模式启动VMWare虚拟机
    vsftpd 530 Login incorrect 根本原因和解决方案
    Oracle的undotbs01.dbf文件太大(占用大量磁盘空间)处理方法 ORA-01654 空间不足 ORA-01653
  • 原文地址:https://www.cnblogs.com/baoendemao/p/3804670.html
Copyright © 2011-2022 走看看