对不起,如果这个问题以前被问过的话。我找了好一阵子都没找到解决办法。
所以我在ResourceOpen.py文件中创建了一个类
class ResourceOpen():
import urllib.request
def __init__(self, source):
try:
# Try to open URL
page = urllib.request.urlopen(source)
self.text = page.read().decode("utf8")
except ValueError:
# Fail? Print error.
print ("Woops! Can't find the URL.")
self.text = ''
def getText(self):
return self.text
我想在另一个程序中使用这个类,youTubeCommentReader.py。。。
import ResourceOpen
import urllib.request
pageToOpen = "http://www.youtube.com"
resource = ResourceOpen.ResourceOpen(pageToOpen)
text = resource.getText()
每当我尝试运行youTubeCommentReader时,就会出现错误:
Traceback
<module> D:\myPythonProgs\youTubeCommentReader.py
__init__ D:\myPythonProgs\ResourceOpen.py
NameError: global name 'urllib' is not defined
我做错什么了?另外,我应该注意,当我访问同一个文件中的类时,ResourceOpen.py可以正常工作。
不要在类级别导入,只需执行以下操作:
在另一个脚本中:
在您的示例中,模块导入很好,但只添加到类命名空间中。您总是希望在全局级别上导入。
原始代码的问题是
urllib.request
最终成为一个类属性,因此必须在__init__
中说self.urllib.request.urlopen(...)
。import
在模块级的情况要好得多。相关问题 更多 >
编程相关推荐