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