Ich lerne Netzwerkprogrammierung mit o'REilys Twisted Netzwerkprogrammierung wesentlicher Leitfaden. (mit pycharm IDE)Wie wird die Klasse "QuoteClientFactory" nicht als Defined in pycharm verstanden?
Ich habe zwei Probleme, die Funktion MaybeStopReactor() wird in Pycharm nicht erkannt und QuoteClientFactory ist nicht als eine definierte Klasse gesehen.
Wie kann ich eine Lösung dafür finden?
class QuoteClientFactory(protocol.ClientFactory):
def __init__(self, quote):
self.quote = quote
def buildProtocol(self, addr):
return QuoteProtocol(self)
def clientConnectionFailed(self, connector, reason):
print("connecton failed:"), reason.getErrorMessage()
**maybeStopReactor()**
def clientConnectionLost(self, connector, reason):
print("connection lost"), reason.getErrorMessage()
maybeStopReactor()
def maybeStopReactor(self):
global quote_counter
quote_counter -=1
if not quote_counter:
reactor.stop()
quotes = [
"you snooze you lose",
"The early bird gets the worm",
"carpe diem"
]
quote_counter = len(quotes)
for quote in quotes:
**reactor.connectTCP('localhost', 6942, QuoteClientFactory(quote))**
reactor.run()
Sie können nicht auf eine Klasse vor dem Ende seiner Definition verweisen, wie, ja, es ist noch nicht definiert. Beachten Sie, dass Methodenkörper während der Klassendefinition nicht ausgeführt werden. Daher kann die Klasse in ihren eigenen Methoden verwendet werden. Vielleicht möchten Sie alles von "quotes = ..." – schwobaseggl