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可能更适合你。

  • 相关阅读:
    hdu1824-Let's go home:图论2-SAT
    acdream:Andrew Stankevich Contest 3:Two Cylinders:数值积分
    POJ 2516 Minimum Cost (KM最优匹配)
    LightOJ
    LightOJ
    HDU
    LightOJ
    LightOJ
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/baoendemao/p/3804670.html
Copyright © 2011-2022 走看看