def bind_signals(self, *args):
        # Alternative: explicit binding
        
        def bind(fun):
            if not isinstance(fun, Signal):
                fun = Signal(fun)
            for name in names:
                funcs = self._downstream.setdefault(name, [])
                if fun not in funcs:
                    funcs.append(fun)
            return fun
        
        fun = None
        names = []
        for arg in args:
            if callable(arg):
                fun = arg
            else:
                names.append(arg)
        
        print('binding ', names)
        if fun is None:
            return bind
        else:
            return bin(fun)
dataset/ETHPy150Open zoofIO/flexx/exp/reactive.py/Reactive.bind_signals/original