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

  • 相关阅读:
    一个链表,奇数位升序偶数位降序,让链表变成升序的
    LeetCode 046 Permutations 全排列
    LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
    LeetCode 024 Swap Nodes in Pairs 交换链表中相邻的两个节点
    模板实现一个栈(内部使用动态申请的数组作为存储结构)
    004 Median of Two Sorted Arrays 两个有序数组的中位数
    静态链接与动态链接
    sizeof和strlen的区别
    const和define的区别
    lodash
  • 原文地址:https://www.cnblogs.com/baoendemao/p/3804670.html
Copyright © 2011-2022 走看看