Try to read a byte from each address, if you get an OSError it means the device isnt there

def scan(self):
        """Try to read a byte from each address, if you get an OSError it means the device isnt there"""
        found = []
        for addr in range(0,0x80):
            try:
                self._i2c_bus.read_byte(addr)
            except OSError:
                continue
            found.append(addr)
        return found