Я пытаюсь создать подкласс неизменного класса date
в Python, но мне также нужно переопределить метод __str__
. Пока у меня есть следующее:
from datetime import date
class Year(date):
def __new__(cls, year):
return super(Year, cls).__new__(cls, year, 1, 1)
def __str__(self):
return self.strftime('%Y')
Конструктор работает нормально, но метод __str__
полностью игнорируется, когда я пытаюсь напечатать объект. Я видел несколько примеров, подклассов других неизменных классов, таких как int
и float
. Все они использовали одно и то же соглашение. Я что-то пропустил? Есть ли что-то особенное для объекта date
?
UPDATE:
Кажется, в коде нет ничего плохого. Я пытался напечатать объект Year
внутри шаблона Django, и, поскольку Django форматирует объекты date
, используя метод локализуемого формата __str__
, игнорируется.