def __init__(self,data):
<EOL>self.n = None<EOL>del self.n<EOL>self.content={}<EOL>if isinstance(data,libxml2.xmlNode):<EOL><INDENT>self.__from_xml(data)<EOL><DEDENT>else:<EOL><INDENT>self.__from_rfc2426(data)<EOL><DEDENT>if not self.content.get("<STR_LIT:N>") and self.content.get("<STR_LIT>"):<EOL><INDENT>s=self.content['<STR_LIT>'].value.replace("<STR_LIT:;>","<STR_LIT:U+002C>")<EOL>s=s.split(None,<NUM_LIT:2>)<EOL>if len(s)==<NUM_LIT:2>:<EOL><INDENT>s=u"<STR_LIT>" % (s[<NUM_LIT:1>],s[<NUM_LIT:0>])<EOL><DEDENT>elif len(s)==<NUM_LIT:3>:<EOL><INDENT>s=u"<STR_LIT>" % (s[<NUM_LIT:2>],s[<NUM_LIT:0>],s[<NUM_LIT:1>])<EOL><DEDENT>else:<EOL><INDENT>s=u"<STR_LIT>" % (s[<NUM_LIT:0>],)<EOL><DEDENT>self.content["<STR_LIT:N>"]=VCardName("<STR_LIT:N>",s)<EOL><DEDENT>elif not self.content.get("<STR_LIT>") and self.content.get("<STR_LIT:N>"):<EOL><INDENT>self.__make_fn()<EOL><DEDENT>for c, (_unused, tp) in self.components.items():<EOL><INDENT>if self.content.has_key(c):<EOL><INDENT>continue<EOL><DEDENT>if tp=="<STR_LIT>":<EOL><INDENT>raise ValueError("<STR_LIT>" % (c,))<EOL><DEDENT>elif tp=="<STR_LIT>":<EOL><INDENT>self.content[c]=[]<EOL><DEDENT>elif tp=="<STR_LIT>":<EOL><INDENT>self.content[c]=None<EOL><DEDENT>else:<EOL><INDENT>continue<EOL><DEDENT><DEDENT>
Initialize a VCard object from data which may be XML node
        or an RFC2426 string.

        :Parameters:
            - `data`: vcard to parse.
        :Types:
            - `data`: `libxml2.xmlNode`, `unicode` or `str`