Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to monkeypatch a static method? [duplicate]

While it's fairly simple to monkeypatch instance methods to classes, e.g.

class A(object):
    pass

def a(self):
    print "a"

A.a = a

doing this with another class's @staticmethod à la

class B(object):
    @staticmethod
    def b():
        print "static b"

A.b = B.b

results in A.b() yielding a

TypeError: unbound method b() must be called with A instance as first argument (got nothing instead)

like image 506
Tobias Kienzler Avatar asked Sep 09 '13 14:09

Tobias Kienzler


Video Answer


1 Answers

Make A.b a static method and you should be fine:

A.b = staticmethod(B.b)

like image 100
Dhara Avatar answered Sep 28 '22 05:09

Dhara