access to base class __init__

Sam sambo at voidstar.com
Thu Mar 6 22:35:18 EST 2008


Dennis Lee Bieber wrote:

> 
> I'm not sure why you need to subclass from threading.Thread if all
> the thread control is being done internal to this class. Subclassing
> means being able to do things like:
> 
Well it was the first thing that occured to me how to have 
private data for each thread ( IP, PORT , CURDIR if I decide to serve
files. ) although I did come across some private_data CLASS in the docs.


> mySH = client_socket_handler(some, args)
> ...
> mySh.start()

hope I can call self.start() from __init__() or self.socket_handler()

> 
> ...   ie; instances of your class behave just like an extended instance of
> the Thread class; but the user of this class never sees that it IS a
> thread. I believe the other facet is that when subclassing from Thread,
> one overloads the run() method AS the target instead of passing some
> other function as a target argument and letting the parent run() method
> call it.
> 
> 
> So why not just make the thread an attribute of the class instead.
> 
> 
Maybe that would be clearer. Starting to wonder if I could return thread 
name this way, then  again, I think part reason for this aproach was the
fact that once started it could finish/crash  all on it's lonesome and 
it's instance could wait for garbage collection.

>>         self.socket = cs
>>         self.rhost_addr = remote_address
>>         print "client_socket_handler.__init__(): ", self.socket,
>> self.rhost_addr
>> #        t1 = threading.Thread( None,self.socket_handler, None, (5,78) )
>> #        t1.start()
> 
> Which is about what you were doing here, but should have used
> self.t1 =...
> self.t1.start()
> 
Well this shouldn't realy be here just stuff I pasted over.
Which brings me to a question how to start my thread internaly. 
Once I managed to call __init__() I should be able to call 
self.start() nicht var? or is it vahr?

>>         self.start()
>>         print "client_socket_handler.__init__(): ", self.socket,
>> self.rhost_addr
>>         print "client_socket_handler.__init__(): enumerate()",
>> threading.enumerate()
>>         
>>     def socket_handler( self, invar, indict ):
> 
> You aren't passing any arguments to this method.
> 
>>         threadname = self.getName()
>>         print "\"%s started\"" % threadname
>>         print "client_socket_handler.socket_handler() invar: ", invar
>>         instr = self.socket.recv( 500 )
>> #        print instr
>>         req_lines = string.split( instr, "\r" )
>>         for line in req_lines:
>>             line.strip( "\n")
> 
> What do you expect the behavior to be if a new-line is embedded and
> not adjacent to a carriage return?
> 
oops:
#handle macs            
        self.socket.send( "500 Inferior systems not permited.\r\n" )    
        self.socket.close()

Heh. Besides I don't think NL is permisible as line separator. 
the command is at the beginnign and I don't expect to support 
any multitude of tags.  



More information about the Python-list mailing list