On 22 September 2017 at 10:05, Thomas Jollans <t...@tjol.eu> wrote:
> On 2017-09-22 10:55, Ganesh Pal wrote:
>> I have two possible values for Z_block in the block code i.e
>> disk_object.data.data.di_data[0] or block.data.data.di_data.data[0][0]
>>
>>
>> def get_block():
>>     ''' Get Z block ''
>>
>>     if block.data.data.di_data.data[0][0] is not None:
>>         Z_block = block.data.data.di_data.data[0][0]
>>
>>     else:
>>          Z_block = disk_object.data.data.di_data[0]
>>
>>     if not Z_block:
>>         return False
>>
>>     return Z_block
>>
>>
>>
>>
>> I have a problem with if and else  satement i.e  if  IF codition fails  the
>> code would exit with  "AttributeError: 'list' object has no attribute
>> 'data' " error
>>
>> Any suggestion on how this can be handled better , Will ignoring the
>> exceptions in try -except with pass be good or are there easier ways ) ,
>>
>>
>> try:
>>     Z_block = block.data.data.di_data.data[0][0]except AttributeError as e:
>>
>>     pass
>
>
>
> try:
>     return self.some.attribute.or.another
> except AttributeError:
>     return DEFAULT_VALUE
>
> is a perfectly good pattern to use.

getattr(obj, 'attr_name', DEFAULT_VALUE) may also be useful, although
if more than one of the attribute lookups in the chain you show could
fail, then catching the exception is probably simpler.

Paul
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to