0
a = [1,2,3]
b =[]
b.append(a)
print a
print b[0]
a = [2,3,4,5]
print a
print b[0]

ここで b[0] と a は、スクリプトが終了したときに同じではありません


このツイストの例では、ファクトリのリストにプッシュすることでプロトコルにアクセスできます。

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

class MultiEcho(Protocol):
    def __init__(self, factory):
        self.factory = factory

    def connectionMade(self):
        self.factory.echoers.append(self)

    def dataReceived(self, data):
        for echoer in self.factory.echoers:
            echoer.transport.write(data)

    def connectionLost(self, reason):
        self.factory.echoers.remove(self)


class MultiEchoFactory(Factory):
    def __init__(self):
        self.echoers = []

    def buildProtocol(self, addr):
        return MultiEcho(self)

reactor.listenTCP(4321, MultiEchoFactory())
reactor.run()

では、それぞれの tcp 接続ごとに異なるプロトコルで何かが変更された場合、factory.echoers はこの変更されたプロトコル オブジェクトをどのように指すのでしょうか?

4

1 に答える 1

8

最初の例を誤解しています。異なる値にリバウンドしただけなので、同じではaありbません。aそれを行う代わりに、の内容を変更したa場合、たとえば、次のようにしてa[0] = 3、それも 3 になることがわかりますb[0][0]

于 2013-04-28T14:37:09.033 に答える