On 23/06/19 7:56 PM, Arup Rakshit wrote:
In the below code:

     @classmethod
     def find(self, id):
         if isinstance(id, list):
             rows = self.__table__().get_all(*id).run(self.__db__().conn)
             result = []
             for row in rows:
                 acategory = Category()
                 acategory.__dict__.update(row)
                 result.append(acategory)
             return result
         else:
             adict = self.__table__().get(id).run(self.__db__().conn)
             acategory = Category()
             acategory.__dict__.update(adict)
             return acategory

I have 2 questions:

1. Is there any better way to create attributes in an object without using 
__dict__().update() or this is a correct approach?
2. Can we get the same result what for row in rows: block is producing without 
killing the readability ?


Examining the readability concern(s):-

1
If it seems complex, first write a comment (in plain English).

2
Is the most basic refactoring improvement is any possible improvement in attribute/variable names?


A mid-point between these two: if you find the intricate coding of specific concepts awkward to read/explain, eg

__table__().get_all(*id).run(self.__db__().conn)
or __dict__.update(row)

then might you consider a short 'helper function' - whose name will explain-all and whose body will 'hide' or abstract the complex detail?

eg absorb_attributes( acategory, row )

(and yes, someone, somewhere, is absolutely itching to throw-in a Star Trek reference!)
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to