Форум сайта python.su
4
Беру простой пример с наследованием:
class base(): def __init__(self, a): self.a = a class child(base): def __init__(self, arg): base.__init__(self,arg+1) x = child(2) print(x.a)
from datetime import date class child2(date): def __init__(self, *args): print(self.year) #date.__init__(self,4,5,6) x = child2(1,2,3) print(x)
Офлайн
4
uf4JaiD5
вижу, что date.__init__ вызывается самостоятельно ещё до запуска child2.__init__
Офлайн
221
https://github.com/python/cpython/blob/master/Lib/datetime.py#L804
Вы просто не удачно выбрали пример. Там нету инициализатора. Только конструктор.
Там можно например так:
class child2(date): def __init__(self, *args): self = super().__new__(self.__class__, *args)
Офлайн
4
JOHN_16
Вы просто не удачно выбрали пример.
JOHN_16
Там нету инициализатора. Только конструктор.
>>> '__init__' in dir(date) True
JOHN_16
Там можно например так: self = super().__new__(self.__class__, *args)
class child2(date): def __init__(self, *args): self = super().__new__(self.__class__, 4,5,6) x = child2(1,2,3) print(x)
Офлайн
221
class child2(date): def __new__(cls, *args): return super().__new__(cls, 4, 5 ,6)
Офлайн
221
Да это я чет хреновый пример написал в прошлый раз
Офлайн
4
JOHN_16
return super().__new__(cls, 4, 5 ,6)
Офлайн