<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def inject(*args, **kwargs):
 """ Mark a class or function for injection, meaning that a DI container knows that it should inject dependencies into it. Normally you won't need this as the injector will inject the required arguments anyway, but it can be used to inject properties into a class without having to specify it in the constructor, or to inject arguments that aren't properly type hinted. Example: @diay.inject('foo', MyClass) class MyOtherClass: pass assert isinstance(injector.get(MyOtherClass).foo, MyClass) """

    def wrapper(obj):
        if inspect.isclass(obj) or callable(obj):
            _inject_object(obj, *args, **kwargs)
            return obj
        raise DiayException("Don't know how to inject into %r" % obj)
    return wrapper