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