Код: Выделить всё
from typing import Self, Union
class Superclass:
@classmethod
def from_dict(cls, dict_: dict[str, str]) -> Self:
return cls(**dict_)
class Subclass(Superclass):
def __init__(self, name: Union[str, None] = None):
self.name = name
def copy(self) -> Self:
return Subclass.from_dict({'name': self.name})
Тип «Подкласс» не может быть присвоен типу возврата «Self». @Subclass"
Я тоже пробовал
Код: Выделить всё
from typing import Type, TypeVar, Union, Dict
T = TypeVar('T', bound='Superclass')
class Superclass:
@classmethod
def from_dict(cls: Type[T], dict_: dict[str, str]) -> T:
return cls(**dict_)
class Subclass(Superclass):
def __init__(self, name: Union[str, None] = None):
self.name = name
def copy(self: T) -> T:
return self.from_dict({'name': self.name})
Невозможно получить доступ к атрибуту "имя" для класса "Суперкласс*" Атрибут " имя" неизвестно
Как я могу использовать метод класса суперкласса для создания экземпляра дочернего класса внутри метод дочернего класса?
Подробнее здесь: https://stackoverflow.com/questions/793 ... lassmethod