Как получить переменные / функции другого класса в классе 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?
1 ответ
Внутри webserver.py
:
from main import Main
Main.SomeFunction()
Вам нужен импорт, чтобы webserver
знает о main
Занятия
Что касается вашей последней проблемы, вы можете сделать либо
BaseHTTPRequestHandler.__init__(self)
или заменить class WebBrowser(BaseHTTPRequestHandler):
с
class WebBrowser(BaseHTTPRequestHandler, object):
(Проблема в том, что у вас есть класс старого стиля в иерархии, который вызывает super
призыв к провалу. К вашему сведению, поиск ошибки может часто помочь.)