如何获取 BaseHTTP 类“WebServer”中另一个类的变量/函数

发布于 2024-11-19 03:27:09 字数 1207 浏览 6 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人事已非 2024-11-26 03:27:09

webserver.py 内部:

from main import Main
Main.SomeFunction()

您需要导入,以便 webserver 了解 main 的类。


关于您的最新问题,您可以执行以下任一操作

BaseHTTPRequestHandler.__init__(self)

,或者将 class WebBrowser(BaseHTTPRequestHandler): 替换为

class WebBrowser(BaseHTTPRequestHandler, object):

(问题是您在层次结构中有一个旧式类,它正在调用 super 调用失败。仅供参考,谷歌搜索错误通常会有所帮助。)

Inside webserver.py:

from main import Main
Main.SomeFunction()

You need the import so that webserver knows about main's classes.


With regards to your latest problem, you can do either

BaseHTTPRequestHandler.__init__(self)

or else replace class WebBrowser(BaseHTTPRequestHandler): with

class WebBrowser(BaseHTTPRequestHandler, object):

(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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文