如何获取 BaseHTTP 类“WebServer”中另一个类的变量/函数
renegade.py(之前的主要)
import socket, re
from prerequisites import *
import datetime,random,sys,time,os,pickle,urllib
from threading import *
class Renegade():
def __init__(self, settings, main, db):
self.settings = settings
self.main = main
self.fds = fds(self.settings, self.main, self)
self.somedict = {}
webserver.py
import string,cgi,time, threading, logging, sys
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import pickle
from renegade import Renegade
class WebServer(BaseHTTPRequestHandler):
#super(WebServer, self).__init__() # if i put it here: NameError: name 'WebServer' is not defined
logger = logging.getLogger('httpd')
def __init__(self, settings, main, renegade):
super(WebServer, self).__init__() # i guess here its right, but that tells me: TypeError: must be type, not classobj
self.settings = settings
self.main = main
self.renegade = renegade
def do_GET(self):
print self.renegade.somedict = {} # want to display this but how do i get somedict of renegade.py (Renegade) class?
renegade.py (main before)
import socket, re
from prerequisites import *
import datetime,random,sys,time,os,pickle,urllib
from threading import *
class Renegade():
def __init__(self, settings, main, db):
self.settings = settings
self.main = main
self.fds = fds(self.settings, self.main, self)
self.somedict = {}
webserver.py
import string,cgi,time, threading, logging, sys
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import pickle
from renegade import Renegade
class WebServer(BaseHTTPRequestHandler):
#super(WebServer, self).__init__() # if i put it here: NameError: name 'WebServer' is not defined
logger = logging.getLogger('httpd')
def __init__(self, settings, main, renegade):
super(WebServer, self).__init__() # i guess here its right, but that tells me: TypeError: must be type, not classobj
self.settings = settings
self.main = main
self.renegade = renegade
def do_GET(self):
print self.renegade.somedict = {} # want to display this but how do i get somedict of renegade.py (Renegade) class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在
webserver.py
内部:您需要导入,以便
webserver
了解main
的类。关于您的最新问题,您可以执行以下任一操作
,或者将
class WebBrowser(BaseHTTPRequestHandler):
替换为(问题是您在层次结构中有一个旧式类,它正在调用
super
调用失败。仅供参考,谷歌搜索错误通常会有所帮助。)Inside
webserver.py
:You need the import so that
webserver
knows aboutmain
's classes.With regards to your latest problem, you can do either
or else replace
class WebBrowser(BaseHTTPRequestHandler):
with(The problem is that you have an old-style class in the hierarchy, which is calling the
super
call to fail. FYI googling the error can often help.)