Upgrading an instance to a subclass

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Antoon Pardon

    #1

    Upgrading an instance to a subclass

    I have a subclass of socket.

    class Mysocket (socket):
    ...

    But when I use the python library it will of course
    just return an instance of socket, like the SocketServer
    module.

    So now I was wondering if it is somehow possible to
    turn this instance into a Mysocket instance, either
    by somehow changing the original instance or producing
    a new instance that represents the same connection.

    --
    Antoon Pardon
  • Orestis Markou

    #2
    Re: Upgrading an instance to a subclass

    I would suggest rather than inheriting from socket, encapsulate over it:

    class MySocket(object ):
    def __init__(self, socket):
    self.socket = socket

    Then you don't have to worry about patching instances...

    On Wed, Oct 8, 2008 at 12:54 PM, Antoon Pardon <apardon@forel. vub.ac.bewrote:
    I have a subclass of socket.
    >
    class Mysocket (socket):
    ...
    >
    But when I use the python library it will of course
    just return an instance of socket, like the SocketServer
    module.
    >
    So now I was wondering if it is somehow possible to
    turn this instance into a Mysocket instance, either
    by somehow changing the original instance or producing
    a new instance that represents the same connection.
    >
    --
    Antoon Pardon
    --

    >


    --
    orestis@orestis .gr

    Comment

    • Terry Reedy

      #3
      Re: Upgrading an instance to a subclass

      Antoon Pardon wrote:
      I have a subclass of socket.
      >
      class Mysocket (socket):
      ...
      >
      But when I use the python library it will of course
      just return an instance of socket, like the SocketServer
      module.
      >
      So now I was wondering if it is somehow possible to
      turn this instance into a Mysocket instance, either
      by somehow changing the original instance
      Instances of Python-coded classes can usually have __class__ changed.
      But not for builtin, C-coded classes, which I assume
      or producing
      a new instance that represents the same connection.
      Given that socket appears to be immutable, I believe Mysocket would need
      a __new__ method that called socket.__new__. But I have never worked
      with __new__ functions.

      Comment

      Working...