'Class methods redefining, 'self' argument problems

I want to implement such case - i have a class, there i have some variable which contains external method, in some situations method can be redefined. It may looks like:

def my_print(self):
    print('my print is called')

class example():
    some_method = my_print

    def __init__(self):
        self.some_method()

    def test(self):
        self.some_method()

So, it works:

a = example()
a.test()

The result looks like:

my print is called (from init)
my print is called (from test)

But in case redefine some_method:

a = example()
a.some_method = my_print
a.test()

It returns a error, which says that i need to give self as argument in the line self.some_method():

TypeError: my_print() missing 1 required positional argument: 'self'

Why does it happen and maybe someone knows trick to solve this problem?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source