Frank Millman wrote:
I know that when a module is imported the first time, it is
'executed'. This normally entails setting up constants, classes,
functions, etc, that you want to make available to the importer.
In this particular case, when it is executed, it does a whole lot
more. It reads in some parameters, establishes a socket connection,
starts a thread, and starts monitoring the socket using select.select.
It also exposes some functions that disguise the complexity of reading
from and writing to the socket.
This enables me to write a 'client' program that look like this -
---------------------------
from Utils.client import *
connect(userid='frank',pwd='')
cust = getRecord(
company='chagford',table='ArCustomers',
column='CustNo',value='A001')
print cust
close()
---------------------------
As you can see, it makes writing a client program very easy.
Are there any problems with this approach?
besides being fragile and not scalable and not thread-safe and
incompatible with introspection tools and utterly surprising for people
used to normal Python behaviour, and only marginally easier to write
than, say:
from Utils.client import Client
c = Client()
c.connect(userid='frank',pwd='')
cust = c.getRecord(
company='chagford',table='ArCustomers',
column='CustNo',value='A001')
print cust
c.close()
and some other problems that I cannot think of right now, you mean?
</F>
--
http://mail.python.org/mailman/listinfo/python-list