Search code examples
pythondynamic-function

python - how can I dynamically create a function with a name based on a string read in from a file?


Let's say I have a file containing the string "unpredictable_words". I would like to read in this string and then define a function as follows:

def test_unpredictable_words(self):
    do_important_stuff()

I would then like to inject this function into a class definition so that this function can be called on any instances of this class.

How can I accomplish this?

I looked a bit at this answer - https://stackoverflow.com/a/8160676/1701170 - but I don't think it does what I want, exactly, or at least I can't understand what is going on.


Solution

  • Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
    >>> def injected(self):
    ...     print 'injected'
    ... 
    >>> class A(object):
    ...     pass
    ... 
    >>> A.injected = injected
    >>> a = A()
    >>> a.injected()
    injected
    >>> def func2(self):
    ...     print 'func2'
    ... 
    >>> setattr(A, 'injected2', func2)
    >>> a.injected2()
    func2
    >>>