Let’s say I have a method and a class:
def my_method(self):
self.mark = 'Knopfler'
class MySubclass(object)
my_method = my_method
I can think of 3 or 4 ways to use my_method within another class.
Case 1:
If I want to have access to my_method within yet another class like this:
class MyClass(object):
def __init__(self):
self.my_subclass = MySubclass()
am I correct in thinking that this will allow me to use my_method on an instance like this:
my_inst = MyClass()
my_inst.my_subclass.my_method()
This seems to work like I expect, but if I do it like this:
Case 2:
class MyClass(object):
my_subclass = MySubclass
my_inst = MyClass()
my_inst2 = MyClass()
my_inst.my_subclass.my_method()
as I understand it, the previous line will apply my_method to both my_inst and my_inst2. Is that correct?
Case 3:
Another way to get my_method as an attribute of MyClass is:
class MyClass(object):
my_method = my_method
and as I understand it, when I have multiple instances of MyClass, applying my_method will affect only the instance to which it is bound. Is that correct?
Case 4 (last one):
class MyClass(object):
def __init__(self):
self.my_method = my_method
and the problem with this final method is that it seems to create my_method as an unbound method, which does not suit my needs. Is there way to add an existing method as a bound instance method in a class definition?
Ok. That is all. Please let me know which of these four cases makes the most sense to use. Thanks.
Answering to your last case, you can bind a method to a class instance with
MethodType: