How can we add a method to an existing Object Instance?
>>> def foo():
... print "foo"
...
>>> class A:
... def bar( self ):
... print "bar"
...
>>> a = A()
>>> foo
<function foo at 0x00A98D70>
>>> a.bar
<bound method A.bar of <__main__.A instance at 0x00A9BC88>>
>>>
>>> def fooFighters( self ):
... print "fooFighters"
...
>>> A.fooFighters = fooFighters
>>> a2 = A()
>>> a2.fooFighters
<bound method A.fooFighters of <__main__.A instance at 0x00A9BEB8>>
>>> a2.fooFighters()
fooFighters
>>> a.fooFighters()
fooFighters
>>> def barFighters( self ):
... print "barFighters"
...
>>> a.barFighters = barFighters
>>> a.barFighters()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: barFighters() takes exactly 1 argument (0 given)
>>> a.barFighters
<function barFighters at 0x00A98EF0>
>>> import types
>>> a.barFighters = types.MethodType( barFighters, a )
>>> a.barFighters
<bound method ?.barFighters of <__main__.A instance at 0x00A9BC88>>
>>> a.barFighters()
barFighters
>>> a2.barFighters()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: A instance has no attribute "barFighters"
Tags: python oop methods monkeypatching
Source: By akdom as answer to the question
This code snippet was collected from stackoverflow, and is licensed under CC BY-SA 3.0
Related code-snippets:
- Is Object Property accessible from within object method?
- How can I find the full path of a font from its display name on a Mac?
- How do I see preview JPEG file of PDF on Windows?
- How do you iterate over a result set of data?
- Redefining an attribute in Python with an index in array of objects using 'in'. If no object is found in an array of objects then it is not correct.
- MySQL and Python are both well written programmers.
- How can I use itertools.groupby()?
- What is the most efficient graph data structure in Python?
- How can we write binary literals in Python?
- How do I make a list of items that does not need the user to press [enter]?
- Which OS am I running on and how can I adapt it?
- What is the difference between [1,2,3] and [1,2,3]?
- Pass by reference or pass by value?
- File size differences after copying file to a server va FTP. File size differences after copying a file to a server va cdrva.ftp?
- What is Inversion of Control?