def derived_class_implements_method(derived: Type[T1],
                                    base: Type[T2],
                                    method_name: str) -> bool:
    """
    Does a derived class implement a method (and not just inherit a base
    class's version)?

    Args:
        derived: a derived class
        base: a base class
        method_name: the name of a method

    Returns:
        whether the derived class method is (a) present, and (b) different to
        the base class's version of the same method

    Note: if C derives from B derives from A, then a check on C versus A will
    succeed if C implements the method, or if C inherits it from B but B has
    re-implemented it compared to A.

    """
    derived_method = getattr(derived, method_name, None)
    if derived_method is None:
        return False
    base_method = getattr(base, method_name, None)
    # if six.PY2:
    #     return derived_method.__func__ != base_method.__func__
    # else:
    #     return derived_method is not base_method
    return derived_method is not base_method
def derived_class_implements_method ( derived : Type [ T1 ] , base : Type [ T2 ] , method_name : str ) -> bool : derived_method = getattr ( derived , method_name , None ) if derived_method is None : return False base_method = getattr ( base , method_name , None ) return derived_method is not base_method
Does a derived class implement a method (and not just inherit a base
    class's version)?

    Args:
        derived: a derived class
        base: a base class
        method_name: the name of a method

    Returns:
        whether the derived class method is (a) present, and (b) different to
        the base class's version of the same method

    Note: if C derives from B derives from A, then a check on C versus A will
    succeed if C implements the method, or if C inherits it from B but B has
    re-implemented it compared to A.