Andy: BIGIP is actually a *class* inside of pycontrol. The methods are actually bound to objects inside that class. If you're interested, you can go into your site-packages directory and look at the actual source of pycontrol.py. There you will see the class BIGIP() stuff where all the magic happens.
One of the tricky parts for a brand-new Python person (welcome!) and pyControl could be that we actually build the methods dynamically, based on the actual WSDL file's method declarations. There's nothing statically built at all method wise: it's all done when you suck up a WSDL and parse it. This means that, generically speaking, a pure BIGIP object has no external methods exposed. It only happens once pyControl (or suds, more accurately) parses the WSDL. At that point they get created. So to get a feel for the actual methods we expose, have a look at the iControl SDK itself, which has all of the methods, etc.
Alternatively, you can load up several WSDLs and poke around in an iPython or IDLE shell to see the methods.
To me, it's one of the cool things about the library. In Python, you instantiate a class - in this case BIGIP() - and that translates to a parsed WSDL or set of WSDLs. Then we create attributes so you can call the methods in a clean way:
b.LocalLB.Pool.get_list() - or -
b.LocalLB.VirtualServer.get_list()
All against the same object. Make sense? I'm afraid I may not have done a good job explaining this. If not, please fire away with more questions.
-Matt