Задать вопрос
@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()
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
Думаю простого способа нет в силу особенностей дизайна. Объект экземпляра класса, как и объект класса, оба имеют полный доступ к пространству имен объекта класса. По этому думаю решение довольно сложное и того не стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
14 дек. 2024, в 22:57
3000 руб./за проект
14 дек. 2024, в 22:46
150000 руб./за проект
14 дек. 2024, в 22:43
2000 руб./за проект