def __init__(self, base_property=None, **kwargs):
<EOL>if base_property is not None:<EOL><INDENT>if not isinstance(base_property, Property):<EOL><INDENT>raise TypeError('<STR_LIT>')<EOL><DEDENT>if isinstance(base_property, ArrayProperty):<EOL><INDENT>raise TypeError('<STR_LIT>')<EOL><DEDENT>for ilegal_attr in ['<STR_LIT:default>', '<STR_LIT:index>', '<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>if getattr(base_property, ilegal_attr, None):<EOL><INDENT>raise ValueError('<STR_LIT>'.format(ilegal_attr))<EOL><DEDENT><DEDENT><DEDENT>self.base_property = base_property<EOL>super(ArrayProperty, self).__init__(**kwargs)<EOL>
Store a list of values, optionally of a specific type.

:param base_property: List item type e.g StringProperty for string
:type: Property