Совместное использование переменных между двумя классами в Python - PullRequest
1 голос
/ 30 октября 2011

Мне хотелось работать над навыками сетевого программирования, многопоточности и ООП.Я столкнулся с проблемой, хотя.У меня есть класс с именем IRC и класс с именем Pong.Я хочу использовать IRC для таких вещей, как подключение к серверу, отправка сообщений и т. Д. Я хочу использовать Понг в качестве потока в фоновом режиме, который проверяет наличие сообщения, содержащего «PING».

class IRC:
    def Connect(self):
        try:
            HOST = sys.argv[1]
            PORT = sys.argv[2]
        except IndexError:
            print "Usage: "+sys.argv[0]+" [server] [port]\n"
            sys.exit(1)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((HOST, PORT))

class Pong(threading.Thread):
    def Pong(self):
        while 1:
            IRC.s.send("Test") # IRC has no attribute 's'

СохранитьПомните, что приведенный выше код упрощен и предназначен только для целей тестирования. Мой вопрос заключается в том, как использовать переменные в одном классе из другого класса.Переменная s объявлена ​​и определена в IRC, но необходима и в Pong.Интерпретатор жалуется, что у класса IRC нет атрибута 's (я сначала попытался вызвать Connect () с переменной примера, чтобы проверить, работает ли он, но не работает).

Как мне решить эту проблему?Я новичок, когда дело доходит до потоков и ориентации объектов.

Заранее спасибо!

1 Ответ

3 голосов
/ 30 октября 2011

Вам потребуется вызвать экземпляр класса IRC, который вы можете передать конструктору PONG:

class IRC:
    def Connect(self):
        try:
            HOST = sys.argv[1]
            PORT = sys.argv[2]
        except IndexError:
            print "Usage: "+sys.argv[0]+" [server] [port]\n"
            sys.exit(1)
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.s.connect((HOST, PORT))

class Pong(threading.Thread):
    def __init__(self,ircclass):
        self.myirc = ircclass
    def Pong(self):
        while 1:
            self.myirc.s.send("Test")

gIRC = IRC
gIRC.connect()
myPong = Pong(gIRC)

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...