@bqio
https://bqio.github.io/

Как сделать, чтобы не было возможности вызвать метод через инстанс?

from typing import Self
from abc import ABC, abstractmethod


class SerializableObject(ABC):
    @abstractmethod
    def serialize(self) -> bytes:
        pass

    @classmethod
    @abstractmethod
    def deserialize() -> Self:
        pass


class NumericObject(SerializableObject):
    def serialize(self) -> bytes:
        return super().serialize()

    @classmethod
    def deserialize() -> Self:
        return super().deserialize()


no = NumericObject()

# Как сделать, чтобы не было возможности вызвать метод через инстанс?
no.deserialize()

# А только через класс
NumericObject.deserialize()
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
Думаю простого способа нет в силу особенностей дизайна. Объект экземпляра класса, как и объект класса, оба имеют полный доступ к пространству имен объекта класса. По этому думаю решение довольно сложное и того не стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы