Чтобы предотвратить вызов метода через экземпляр класса и разрешить его использование только через сам класс, вы можете сделать метод статическим и проверить, был ли вызов метода выполнен через класс или экземпляр.
Вот пример, как это можно реализовать:
```python
class MyClass:
@classmethod
def deserialize(cls):
if isinstance(cls, type): # Проверка, что метод вызван через класс
print("Метод deserialize вызван успешно.")
else:
raise TypeError("Метод deserialize нельзя вызывать через экземпляр класса.")
# Вызов через класс
MyClass.deserialize() # Выведет: Метод deserialize вызван успешно.
# Попробуем вызвать через экземпляр
obj = MyClass()
try:
obj.deserialize() # Это вызовет ошибку
except TypeError as e:
print(e) # Выведет: Метод deserialize нельзя вызывать через экземпляр класса.
```
В данном примере метод `deserialize` является методом класса, используемым только через класс `MyClass`. При попытке вызвать его через экземпляр класса возникает исключение `TypeError`.
Таким образом, метод можно вызывать только как `MyClass.deserialize()`, но не как `obj.deserialize()`.