calling class methods from class methods, help?
Terry Reedy
tjreedy at udel.edu
Wed Mar 11 15:59:25 EDT 2009
Oltmans wrote:
> I've a multithreaded program in which I've to call class methods from
> class methods. Here is how my code look like (excluding imports),. Any
> help is highly appreciated.
>
> #!/usr/bin/env python
> class Requests(Thread):
>
> def __init__(self, times):
> Thread.__init__(self)
> self.times=times
> self.name=''
> def run(self):
>
> sites=['example.com','example1.com']
> for i in range(0,self.times):
> for site in sites:
> self.name = site
> self.html=SendRequest() # This line throws an error
You should (almost) always display the error traceback. I suspect
NameError: global 'SendRequest' not found. You need
Requests.SendRequest. but...
> def SendRequest(self): #A class method
If it were, then call the parameter 'cls', not 'self'. But it is not a
classmethod without @classmethod decorator. but...
> # it sends a request to website using mechanize library
Does this need to send the class rather than instance object to the
website? If not, better to leave it an instance method and use
self.SendRequest above. If the request uses instance variables, then it
*must* be an instance method!
>
> def startThis(times,reqs):
>
> threads=[]
> for i in range (0,reqs):
> owner=Requests(times)
> owner.start()
> threads.append(owner)
>
> for thread in threads:
> thread.join()
>
> if __name__=="__main__":
> #I want to create 2 threads, each of them will execute twice. At
> least that is the intention.
> startThis(2,2)
>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list