How can I assign `self.f` to a function using a class decorator like this `@Decorator(t=3)`?

```
#!/usr/bin/env python3

class Decorator:
    def __init__(self, f=None, *, t=2):
        if f is None:
            self.t = t
            self.f = None # <=== this line need to be ?
        else:
            self.t = t
            self.f = f
    def __call__(self, *args, **kwargs):
        print(f'{self.f = !r}')
        for _ in range(self.t):
            self.f(*args, **kwargs)

@Decorator
def hello4(name):
    print(f'Hello {name}')

if __name__ == '__main__':
    hello4("gert")

@Decorator(t=3)
def hello6(name):
    print(f'Hello {name}')

if __name__ == '__main__':
    hello6("gert")

```

I would like to achieve the same as this but then using a Class decorator instead

```
def decorator(f=None, *, t=2):
    def decorator(f):
        def repeat(*args, **kwargs):
            for _ in range(t):
                value = f(*args, **kwargs)
            return value
        return repeat

    if f is None:
        print(f'{f = !r}')
        return decorator
    else:
        print(f'{f = !r}')
        return decorator(f)

@decorator(t=3)
def hello1(name):
    print(f'Hello {name}')

if __name__ == '__main__':
    hello1("gert")

@decorator
def hello5(name):
    print(f'Hello {name}')

if __name__ == '__main__':
    hello5("gert")

```