Вот мой вывод ответа пользователя2660112 - один метод, чтобы вернуть ячейку для вставки в граничную и фоновую таблицу и аналогичный, но без полей / бесцветный сорт:
private static PdfPCell GetCellForBorderedTable(Phrase phrase, int align, BaseColor color)
{
PdfPCell cell = new PdfPCell(phrase);
cell.HorizontalAlignment = align;
cell.PaddingBottom = 2f;
cell.PaddingTop = 0f;
cell.BackgroundColor = color;
cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
return cell;
}
private static PdfPCell GetCellForBorderlessTable(Phrase phrase, int align)
{
PdfPCell cell = new PdfPCell(phrase);
cell.HorizontalAlignment = align;
cell.PaddingBottom = 2f;
cell.PaddingTop = 0f;
cell.BorderWidth = PdfPCell.NO_BORDER;
cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
return cell;
}
Они могут затем называть так:
Font timesRoman9Font = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 9, BaseColor.BLACK);
Font timesRoman9BoldFont = FontFactory.GetFont(FontFactory.TIMES_BOLD, 9, BaseColor.BLACK);
Phrase phrasesec1Heading = new Phrase("Duckbills Unlimited", timesRoman9BoldFont);
PdfPCell cellSec1Heading = GetCellForBorderedTable(phrasesec1Heading, Element.ALIGN_LEFT, BaseColor.YELLOW);
tblHeadings.AddCell(cellSec1Heading);
Phrase phrasePoisonToe = new Phrase("Poison Toe Toxicity Level (Metric Richter Scale, adjusted for follicle hue)", timesRoman9Font);
PdfPCell cellPoisonToe = GetCellForBorderlessTable(phrasePoisonToe, Element.ALIGN_LEFT);
tblFirstRow.AddCell(cellPoisonToe);
super()
позволяет Вам постараться не относиться к базовому классу явно, который может быть хорошим. Но основное преимущество идет со множественным наследованием, где все виды забавный материал могут произойти. Посмотрите стандартные документы о супер , если Вы уже не имеете.
Примечание, что синтаксис, измененный в Python 3.0 : можно просто сказать super().__init__()
вместо super(ChildB, self).__init__()
, какой IMO вполне немного более хорош. Стандартные документы также относятся к руководство по использованию супер () , который является довольно объяснительным.
Нет, действительно. super()
взгляды на следующий класс в MRO (порядок разрешения метода, к которому получают доступ с cls.__mro__
) для вызова методов. Просто назвав основу __init__
вызовы основа __init__
. Как это происходит, MRO имеет точно один объект - основа. Таким образом, Вы действительно делаете ту же самую вещь, но более хорошим способом с super()
(особенно при вхождении во множественное наследование позже).