def methods(self):
done = {}<EOL>for astroid in itertools.chain(iter((self,)), self.ancestors()):<EOL><INDENT>for meth in astroid.mymethods():<EOL><INDENT>if meth.name in done:<EOL><INDENT>continue<EOL><DEDENT>done[meth.name] = None<EOL>yield meth<EOL><DEDENT><DEDENT>
Iterate over all of the method defined in this class and its parents.

        :returns: The methods defined on the class.
        :rtype: iterable(FunctionDef)