查看: 2192|回复: 4

TypeError: 'module' object is not callable

[复制链接]

10

主题

82

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2018-9-19 16:14:38 | 显示全部楼层 |阅读模式
File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
    self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
为什么我收到此错误?我很困惑。
回复

使用道具 举报

10

主题

72

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2018-9-19 16:16:33 | 显示全部楼层
socket是一个包含socket类的模块。
你需要做socket.socket(...)或from socket import socket:
  1. >>> import socket
  2. >>> socket
  3. <module 'socket' from 'C:\Python27\lib\socket.pyc'>
  4. >>> socket.socket
  5. <class 'socket._socketobject'>
  6. >>>
  7. >>> from socket import socket
  8. >>> socket
  9. <class 'socket._socketobject'>
复制代码

请注意,这里的错误很容易理解:如果module object is not callable,您可能正在调用模块对象!什么是模块对象?这是导入模块时获得的类型。
回复

使用道具 举报

4

主题

33

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-9-19 16:17:49 | 显示全部楼层
添加到__init__.py,例如:
  1. from YourClass import YourClass
复制代码

然后,当您将其导入另一个脚本时,您将准备好类的实例:
  1. from YourClassParentDir import YourClass
复制代码

回复

使用道具 举报

11

主题

80

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2018-9-19 16:20:09 | 显示全部楼层
假设YourClass.py的内容是:
  1. class YourClass:
  2.     # ......
复制代码

如果您使用:
  1. from YourClassParentDir import YourClass  # means YourClass.py
复制代码

通过这种方式,我得到了TypeError:如果你试图使用,那么'module'对象是不可调用的YourClass()。
但是,如果您使用:
  1. from YourClassParentDir.YourClass import YourClass   # means Class YourClass
复制代码

或使用YourClass.YourClass()就不会报错
回复

使用道具 举报

0

主题

32

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-10-10 08:13:04 | 显示全部楼层
是滴!呐
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表