Kenny Li wrote:
> Yep! I think that is what I want. I did not know enough to do (inside 
> C.__init__() ):
>         arg1.__class__=C
>  
> As to my intent, I want to subclass socket.socket. By doing so, I may 
> get a socket (instance of my baseClass) after it (my subclass) accepts 
> an incoming connection, and I want to use the subclass instance (the 
> client socket) to get an instance of my subclass.
>  
> Do you think your solution would work in my socket.socket subclassing 
> case? (I will give it a try to verify, just asking before I even try)

I think so :-) unless some socket code is looking at the actual class of 
the socket.

But why not just override socket.accept() to do what you want? Here is 
the full def of socket.accept():

     def accept(self):
         sock, addr = self._sock.accept()
         return _socketobject(_sock=sock), addr

Just change it to

     def accept(self):
         sock, addr = self._sock.accept()
         return MySocket(_sock=sock), addr

> Again, Thanks a lot, Kent!
>  
> PS: there is information about __new__(), but there seems not a lot 
> about __class__, could you point me to some web sources about __class__?

Google "site:docs.python.org __class__" and especially
http://docs.python.org/dev/lib/specialattrs.html

Kent

_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to