Get all possible subsets from a set of distinct integers using OOP
I. This chunk of code:

a = []
n = int(input("Enter number of elements of list: "))
for i in range(0,n):
    b = int(input("Enter element: "))
    a.append(b)


is mostly C-like (or Pascal-like etc). You can replace it with more Pythonic:

a = input('Enter elements splitted by ":" ').split(' ')

II. Here:

print (sub().f1(a))

You are creating a sub instance within the print function. It is a bad idea because it will disappear after print. You should create it before you print something (and, yes, classes names in Python are in CamelCase):

waka = Sub()
print(waka.f1(a))


III. I prefer to create __init__() function each time I create a class. It is not really necessary but in most cases, it is the first one is creating in the new class:

class Sub(object):
    def __init__(self):
        pass


IV. If it is your homework you should do with recursion, the code is pretty OK. In another case, I recommend you to use Python itertools module (you should avoid recursion as much as possible):

    def f2(self, current, s1):  
        return [
            e
            for e in itertools.chain.from_iterable([
                [sorted(l) for l in itertools.combinations(s1, length)]
                for length in range(1, len(s1))
            ])
        ]


So here is the result code for recursion version:

class Sub(object):
    def __init__(self):
        pass

    def f1(self, s1):  
        return self.f2([], sorted(s1))  

    def f2(self, current, s1):  
        if s1:  
            return self.f2(current, s1[1:]) + self.f2(current + [s1[0]], s1[1:])  
        return [current]

a = input('Enter elements splitted by " ": ').split(' ')
waka = Sub()
print(waka.f1(a))