class TestSpeedRetrieval(webapp.RequestHandler): """ Test retrieval times of various important records in the BigTable database """ def get(self): commandValidated = True beginTime = time() itemList = Subscriber.all().fetch(1000) for item in itemList: pass endTime = time() self.response.out.write("<br/>Subscribers count=" + str(len(itemList)) + " Duration=" + duration(beginTime,endTime))
How can I turn the above into a function where I pass the name of the class? In the above example, Subscriber (in the Subscriber.all().fetch statement) is a class name, which is how you define data tables in Google BigTable with Python.
I want to do something like this:
TestRetrievalOfClass(Subscriber) or TestRetrievalOfClass("Subscriber")
Thanks, Neal Walters
Methods are passed as arguments just like a variable. In this example, we define a class and its objects. We create an object to call the class methods. Now, to call a passed method or function, you just use the name it's bound to in the same way you would use the method's (or function's) regular name.
Information can be passed into functions as arguments. Arguments are specified after the function name, inside the parentheses. You can add as many arguments as you want, just separate them with a comma.
class TestSpeedRetrieval(webapp.RequestHandler): """ Test retrieval times of various important records in the BigTable database """ def __init__(self, cls): self.cls = cls def get(self): commandValidated = True beginTime = time() itemList = self.cls.all().fetch(1000) for item in itemList: pass endTime = time() self.response.out.write("<br/>%s count=%d Duration=%s" % (self.cls.__name__, len(itemList), duration(beginTime,endTime)) TestRetrievalOfClass(Subscriber)
If you pass the class object directly, as in your code between "like this" and "or", you can get its name as the __name__
attribute.
Starting with the name (as in your code after "or") makes it REALLY hard (and not unambiguous) to retrieve the class object unless you have some indication about where the class object may be contained -- so why not pass the class object instead?!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With