Начальный блокнот с флагом --script
сохранит файл .py
рядом с .ipynb
при каждом сохранении. Посмотрите на github / ipython / nbconvert , который в настоящее время сливается с самим IPython, поэтому не ожидайте точности документа и nbconvert, чтобы работать из коробки, не работая немного. (./nbconvert & lt; format & gt; & lt; file.ipynb & gt;) во время этой записи, & lt; format & gt; в [python, latex, markdown, full_html, ...])
Вы также можете (как ipynb is json), загрузить его, пропустить его и eval
кодеку в текущем пространстве имен. Вы найдете пример здесь и там в Интернете или IPython wiki на github.
Этот ответ слишком стар, см. Ниже ответ @williampli.
Вы можете сделать этот класс абстрактным, и тогда подкласс должен реализовать фактический вызов базы данных:
public abstract class PaginationWrapper<T> {
private int currentPage = 1;
private int pageSize = 100;
public ArrayList<T> getNextPage() {
currentPage++;
int startRow = currentPage * pageSize;
// here we delegate to the implementation
return getNextPage(startRow, pageSize);
}
protected abstract ArrayList<T> getNextPage(int startRow, int pageSize);
}
И затем создать 2 подкласса
public class JobPagination extends PaginationWrapper<Job> {
protected ArrayList<Job> getNextPage(int startRow, int pageSize) {
return /* list from database */
}
}
public class ContractPagination extends PaginationWrapper<Contract> {
protected ArrayList<Contract> getNextPage(int startRow, int pageSize) {
return /* list from database */
}
}
Теперь общая логика упакована в PaginationWrapper
, но фактическая логика базы данных теперь находится в определенном подклассе.