def class_has_methods(obj):
# Return True if list is not empty
# Copy the list of attributes of the object
obj_attributes = dir(obj)
# Get list of common attributes between object and the superclass of all objects: object
common_attributes = [attr for attr in dir(object) if attr in obj_attributes]
# Remove common attributes
uncommon_attributes = [attr for attr in obj_attributes if attr not in common_attributes]
# Filter out callable attributes
callable_attributes = [attr for attr in uncommon_attributes if callable(getattr(obj, attr))]
# Return True if list is not empty
return len(callable_attributes) > 0
assert class_has_methods(class_with_methods)
assert not class_has_methods(class_without_methods)