Exec inside a class method to call other class methods?

Matthew Dubins matt.dubins at sympatico.ca
Fri Dec 26 00:22:48 CET 2008


Each type does contain its own parsing method.  It's just that, as it 
stands, one method is being used to shunt off the data to the correct 
parsing method.

Matthew Dubins

David Stanek wrote:
> On Thu, Dec 25, 2008 at 1:22 PM, Matthew Dubins
> <matt.dubins at sympatico.ca> wrote:
>   
>> Hello all,
>>
>> I have made a python script to upload contact information from an excel
>> worksheet to an online database.  One part of the program that really
>> tripped me up was when I wanted to call specific class methods that I had
>> made to deal with specific types of contact information (Parent's name,
>> Child's name, Phone #, etc).  My first thought was to make it easy using the
>> exec statement.
>> The code (a method within a class) looked like this:
>> ----------
>> def parse(self, data, data_type)
>>   exec "self.__parse_%s(data)" % data_type
>> ----------
>> The data_type variable contains strings that exactly match the spellings of
>> the 2nd word in the titles of the class methods that I wanted to call for
>> each data_type inputted into the parse function.  For some reason, *it
>> didn't work*.  Alternately, I found the ugly code shown below to be
>> functional.  As you can see, for each data_type, I call the corresponding
>> class method that I've specified.  Please help me to transform my ugly
>> functional code into concise functional code. :)
>>
>> Thanks,
>> Matthew
>> ----------
>>   def parse(self, data, data_type):
>>       if data_type == 'nocall':
>>           self.__parse_nocall(data)
>>       elif data_type == 'DOB':
>>           self.__parse_DOB(data)
>>       elif data_type == 'gender':
>>           self.__parse_gender(data)
>>       elif data_type == 'Prematurity':
>>           self.__parse_Prematurity(data)
>>       elif data_type == 'email':
>>           self.__parse_email(data)
>>       elif data_type == 'languages':
>>           self.__parse_languages(data)
>>       elif data_type == 'phone':
>>           self.__parse_phone(data)
>>       elif data_type == 'cname':
>>           self.__parse_cname(data)
>>       elif data_type == 'pname':
>>           self.__parse_pname(data)
>>       elif data_type == 'address':
>>           self.__parse_address(data)
>>       elif data_type == 'duedate':
>>           self.__parse_dudedate(data)
>>
>>     
>
> I would look for a way to reorganize your code so that each type
> contains its own parse method.
>
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20081225/90ce0655/attachment.html>


More information about the Python-list mailing list