Я делаю простую игру командной строки, но не знаю, как моделировать пользовательские вводы только для чтения в Python.
Сейчас я думаю об объявлении ABC под названием Input
и создании подклассов.it:
import abc
class Input(abc.ABC):
@abc.abstractmethod
def is_valid(self, *args, **kwargs):
pass
@abc.abstractmethod
def pop(self):
pass
class NameInput(Input):
def __init__(self, name):
self._name = name
def is_valid(self, *args, **kwargs):
pass
def pop(self):
return self._name
Еще один способ, с помощью которого я придумал, - использовать декоратор @property
:
import abc
class Input(abc.ABC):
@abc.abstractmethod
def is_valid(self, *args, **kwargs):
pass
@abc.abstractmethod
def value(self, value, *args, **kwargs):
pass
class NameInput(Input):
def __init__(self, name):
self._name = name
def is_valid(self, *args, **kwargs):
pass
@property
def value(self, value, *args, **kwargs):
return self._name
Есть ли лучший способ достичь моей цели?Если да, то что это?
Для вашей информации, моя цель - не просто создать и запустить программу, а выучить хорошие привычки программирования.Пожалуйста, не стесняйтесь слишком усложнять и скажите мне, как вы предпочитаете (ради масштабируемости и ремонтопригодности) в крупномасштабном проекте.