I think this is what you are looking for. I have added an additional parameter 'Inheritance hierarchy'.
import sys
import inspect
class Foo(object):
def __init__(self):
flag = 0
print("Subclasses:", end=" ")
for subclass in self.__class__.__subclasses__(): #prints the subclasses
print(subclass.__name__, end=" ")
flag = 1
if flag == 0:
print(None)
else:
print()
print("Class name: ", self.__class__.__name__) #prints the class name
print("Method name: ", sys._getframe().f_code.co_name) #prints the method name
a = inspect.getmro(self.__class__)
flag = 0
print("Inheritance Hierarchy:", end=" ")
for i in range(len(a)): #prints the inheritance hierarchy
if not i == 0:
print(a[(len(a)-1)-i].__name__, end=" ")
flag = 1
if flag == 0:
print(None)
else:
print("\n")
class Xoo(Foo):
def __init__(self):
flag = 0
print("Subclasses:", end=" ")
for subclass in self.__class__.__subclasses__(): #prints the subclasses
print(subclass.__name__, end=" ")
flag = 1
if flag == 0:
print(None)
else:
print()
print("Class name: ", self.__class__.__name__) #prints the class name
print("Method name: ", sys._getframe().f_code.co_name) #prints the method name
a = inspect.getmro(self.__class__)
flag = 0
print("Inheritance Hierarchy:", end=" ")
for i in range(len(a)): #prints the inheritance hierarchy
if not i == 0:
print(a[(len(a)-1)-i].__name__, end=" ")
flag = 1
if flag == 0:
print(None)
else:
print("\n")
class Zoo(Xoo):
def __init__(self):
flag = 0
print("Subclasses:", end=" ")
for subclass in self.__class__.__subclasses__(): #prints the subclasses
print(subclass.__name__, end=" ")
flag = 1
if flag == 0:
print(None)
else:
print()
print("Class name: ", self.__class__.__name__) #prints the class name
print("Method name: ", sys._getframe().f_code.co_name) #prints the method name
a = inspect.getmro(self.__class__)
flag = 0
print("Inheritance Hierarchy:", end=" ")
for i in range(len(a)): #prints the inheritance hierarchy
if not i == 0:
print(a[(len(a)-1)-i].__name__, end=" ")
flag = 1
if flag == 0:
print(None)
else:
pass
Foo()
Xoo()
Zoo()
Running the above code, you get the following output:
Subclasses: Xoo
Class name: Foo
Method name: __init__
Inheritance Hierarchy: Foo
Subclasses: Zoo
Class name: Xoo
Method name: __init__
Inheritance Hierarchy: Foo Xoo
Subclasses: None
Class name: Zoo
Method name: __init__
Inheritance Hierarchy: Foo Xoo Zoo