Как получить переменные / функции другого класса в классе BaseHTTP "WebServer" - PullRequest
1 голос
/ 09 июля 2011

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 Ответ

0 голосов
/ 09 июля 2011

Внутри webserver.py:

from main import Main
Main.SomeFunction()

Вам нужен импорт, чтобы webserver знал о main классах.


Что касается вашей последней проблемы, вы можете сделать либо

BaseHTTPRequestHandler.__init__(self)

или замените class WebBrowser(BaseHTTPRequestHandler): на

class WebBrowser(BaseHTTPRequestHandler, object):

(Проблема в том, что в иерархии есть класс старого стиля, который вызывает вызов super с ошибкой. К вашему сведению, поиск ошибки часто может помочь.)

...