class Super(object): attribute = 3 def func(self): return 1 class Inner(): pass class Sub(Super): #? 13 Sub.attribute def attribute(self): pass #! 8 ['attribute = 3'] def attribute(self): pass #! 4 ['def func'] func = 3 #! 12 ['def func'] class func(): pass #! 8 ['class Inner'] def Inner(self): pass # ----------------- # Finding self # ----------------- class Test1: class Test2: def __init__(self): self.foo_nested = 0 #? ['foo_nested'] self.foo_ #? self.foo_here def __init__(self, self2): self.foo_here = 3 #? ['foo_here', 'foo_in_func'] self.foo_ #? int() self.foo_here #? self.foo_nested #? self.foo_not_on_self #? float() self.foo_in_func self2.foo_on_second = '' def closure(): self.foo_in_func = 4. def bar(self): self = 3 self.foo_not_on_self = 3 class SubTest(Test1): def __init__(self): self.foo_sub_class = list def bar(self): #? ['foo_here', 'foo_in_func', 'foo_sub_class'] self.foo_ #? int() self.foo_here #? self.foo_nested #? self.foo_not_on_self