I agree with user_none. You should be using a subclass. You wouldn't be the first. There are subclasses of Metadata in the device drivers.
You can avoid attribute/method collision by prefixing your methods and attributes with something, such as sb_.
Regarding getting instances from get_metadata, do something like:
Code:
class SeriesBook(Metadata):
def __init__(self, title, author):
Metadata.__init__(self, title, author)
....