初歩的なミスなのかもしれませんが、どなたか教えてください・・・

以下のコード↓

class Set:
    def __init__(self, value = []):
        self.data = []
        self.concat(value)

    def intersect(self, other):
        res = []
        for x in self.data:
            if x in other:
                res.append(x)
        return Set(res)

def union(self, other):
    res = self.data[:]
    for x in other:
        if not x in res:
            res.append(x)
    return Set(res)

def concat(self, value):
    for x in value:
        if not x in self.data:
            self.data.append(x)

def __len__(self):          return len(self.data)
def __getitem__(self, key): return self.data[key]
def __and__(self, other):   return self.intersect(other)
def __or__(self, other):    return self.union(other)
def __repr__(self):         return 'Set:' + `self.data`

を書いたうえで、次に↓

>>> x = Set([1,2,3,4])

と実行しますと↓

Traceback (most recent call last):
File "", line 1, in
x = Set([1,2,3,4])
File "", line 4, in init
self.concat(value)
AttributeError: Set instance has no attribute 'concat'
と表示されます。
concatを属性として持っていないというエラーだと思うのですが、この場合の対処法または、コードの不備等があれば教えて頂きたいです。
宜しくお願い致します。