Welcome, guest | Sign In | My Account | Store | Cart
```class L(list):
"""
A subclass of list that can accept additional attributes.
Should be able to be used just like a regular list.

The problem:
a = [1, 2, 4, 8]
a.x = "Hey!" # AttributeError: 'list' object has no attribute 'x'

The solution:
a = L(1, 2, 4, 8)
a.x = "Hey!"
print a       # [1, 2, 4, 8]
print len(a)  # 4

You can also do these:
a = L( 1, 2, 4, 8 , x="Hey!" )                 # [1, 2, 4, 8]
a = L( [1, 2, 4, 8] , x="Hey!" )               # [1, 2, 4, 8]
a = L( {1, 2, 4, 8} , x="Hey!" )               # [1, 2, 4, 8]
a = L( (2 ** b for b in range(4)) , x="Hey!" ) # [1, 2, 4, 8]
a = L( [2 ** b for b in range(4)] , x="Hey!" ) # [1, 2, 4, 8]
a = L( 2 )                                     # 
"""
def __new__(self, *args, **kwargs):
return super(L, self).__new__(self, args, kwargs)

def __init__(self, *args, **kwargs):
if len(args) == 1 and hasattr(args, '__iter__'):
list.__init__(self, args)
else:
list.__init__(self, args)
self.__dict__.update(kwargs)
```