On Dec 18, 2008, at 6:04 AM, Drew Smathers wrote:

Protocol is an old-style class - doesn't inherit from object - so
property won't work in that context.  This won't be a problem in
python 3 - old-style/new-style classes are consolidated.


Is there any interest in adding 'object' to some of the core classes like Deferred, in a future release of Twisted? It would help with some debugging/logging (because there's better introspection)

As much as I'm looking forward to using Python 3, I can't imagine I'll be using it for any real projects that I have to deploy for at least 2 years...

Alec


-Drew

On Thu, Dec 18, 2008 at 8:35 AM, Gabriel Rossetti
<gabriel.rosse...@arimaz.com> wrote:
Hello everyone!

I have a problem, if I try to use python property in a twisted program, it doesn't really work...the accessor works but as soon as I use the mutator, it no longer uses the property (and doesn't set the "real" variable. I tried
an example without twisted, it works, and with the twisted example it
doesn't... does anyone know what is going on? Thank you!

Gabriel

#-------------------------------------------------------------------------------------------------------
# This doesn't work, why????
#-------------------------------------------------------------------------------------------------------

from twisted.internet.protocol import Protocol, ClientFactory
from sys import stdout

class Echo(Protocol):

 def __init__(self):
     self.__x = None

 def __getx(self):
     return self.__x
   def __setx(self, value):
     if(value != 0):
         self.__x = value
           def __delx(self):
     del self.__x

 x = property(__getx, __setx, __delx, "the doc")

 def connectionMade(self):
     t = self.x
     assert t is None
     self.x = 4
     assert self.__x == 4
     t = self.x
     assert t == 4
     self.x = 0
     assert self.__x == 4
     t = self.x
     assert t == 4
       def dataReceived(self, data):
     stdout.write(data)


class EchoClientFactory(ClientFactory):
 def startedConnecting(self, connector):
     print 'Started to connect.'

 def buildProtocol(self, addr):
     print 'Connected.'
     return Echo()

 def clientConnectionLost(self, connector, reason):
     print 'Lost connection.  Reason:', reason

 def clientConnectionFailed(self, connector, reason):
     print 'Connection failed. Reason:', reason

if(__name__ == "__main__"):
   from twisted.internet import reactor
 reactor.connectTCP("localhost", 4444, EchoClientFactory())
 reactor.run()


#-------------------------------------------------------------------------------------------------------
# This works, as expected
#----------------------------------------------------------------------------------------------------
class C(object):
       def __init__(self):
     self._x = None
       def __getx(self):
     return self._x
       def __setx(self, value):
     if(value != 0):
         self._x = value
           def __delx(self):
     del self._x
       x = property(__getx, __setx, __delx, "The doc")


if(__name__ == "__main__"):
   c = C()
 t = c.x
 assert t is None
 c.x = 4
 assert c._x == 4
 t = c.x
 assert t == 4
 c.x = 0
 assert c._x == 4
 t = c.x
 assert t == 4



_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python




--
\\\\\/\"/\\\\\\\\\\\
\\\\/ // //\/\\\\\\\
\\\/  \\// /\ \/\\\\
\\/ /\/ / /\/ /\ \\\
\/ / /\/ /\  /\\\ \\
/ /\\\  /\\\ \\\\\/\
\/\\\\\/\\\\\/\\\\\\
              d.p.s

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to