[Twisted-Python] python properties in twisted don't work

Alec Flett alecf at metaweb.com
Thu Dec 18 14:03:48 EST 2008


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.rossetti at 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 at twistedmatrix.com
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>>
>
>
>
> -- 
> \\\\\/\"/\\\\\\\\\\\
> \\\\/ // //\/\\\\\\\
> \\\/  \\// /\ \/\\\\
> \\/ /\/ / /\/ /\ \\\
> \/ / /\/ /\  /\\\ \\
> / /\\\  /\\\ \\\\\/\
> \/\\\\\/\\\\\/\\\\\\
>               d.p.s
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python





More information about the Twisted-Python mailing list