how to add class instance attributes from list - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: how to add class instance attributes from list (/thread-19963.html) |
how to add class instance attributes from list - 999masks - Jul-22-2019 hi everyone, My questions is follows lets say i have class BaseClass: def __init__(self, atr_1=None, atr_2=None, atr_3=None): passI want to create class instance by passing attributes in the list. Here is the tricky part, my list of attributes let say has less items.. a_list = ["att_1_data", "att_2_data", "att_4_data"]1. how i can pass this list of attributes without iterating over list items 2. how can i skip the att_3_data (leave default as None as you see att_3_data is missing from list) and continue to next attr_4_data I guess somehow i need to use keyword argument.. hope I was able to describe the problem THANKS RE: how to add class instance attributes from list - Gribouillis - Jul-22-2019 I see at least two ways. The first way is to create a filtering function that prepares the arguments to be passed to the constructor. You will end up with a syntax such as instance = BaseClass(**eggs(a_list))The second way is to create a factory function to create instances with a syntax such as instance = bacon(a_list)In your case you could implement these strategies with eg def eggs(a_list): return {'attr_1': a_list[0], 'attr_2': a_list[1]} def bacon(a_list): return BaseClass(attr_1=a_list[0], attr_2=a_list[1]) RE: how to add class instance attributes from list - 999masks - Jul-22-2019 (Jul-22-2019, 07:39 AM)Gribouillis Wrote:Thanks a lot for quick reply, can you elaborate how **eggs works?instance = BaseClass(**eggs(a_list)) also does it means that my BaseClass need to be created like BaseClass(**kwargs)? I am sorry i cannot figure it out how the second option works.. |