In the following toy example, the last line B().show() doesn't call the appropriate version of show function. It's supposed to call the child version rather than the parent version. I guess I should do something like __class_method() but couldn't figure out a complete answer.
I can certainly overwrite show function in B. But that essentially means to copy and paste show function. It's not elegant.
## version one ##
class A(object):
    def method(self):
        print("hello")
    def show(self):
        self.method()
class B(A):
    def method(self):
        print("goodbye")
A().show() ## print out hello
B().show() ## print out goodbye
## version two ##    
class A(object):
    def __method(self):
        print("hello")
    def show(self):
        self.__method()
class B(A):
    def __method(self):
        print("goodbye")
A().show() ## print out hello
B().show() ## print out hello
 
     
    