Даже если класс унаследован от ABC, его экземпляр все равно можно создать, если он не содержит абстрактных методов.
Имея приведенный ниже код, как лучше всего предотвратить объект Identifier от создания: Identifier(['get', 'Name'])?
from abc import ABC
from typing import List
from dataclasses import dataclass
@dataclass
class Identifier(ABC):
sub_tokens: List[str]
@staticmethod
def from_sub_tokens(sub_tokens):
return SimpleIdentifier(sub_tokens) if len(sub_tokens) == 1 else CompoundIdentifier(sub_tokens)
@dataclass
class SimpleIdentifier(Identifier):
pass
@dataclass
class CompoundIdentifier(Identifier):
pass
Подробнее здесь: https://stackoverflow.com/questions/605 ... tantiation
Абстрактный класс данных без абстрактных методов в Python: запретить создание экземпляров ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение