Вызовите исключение:
def __init__(self, arg):
if not isinstance(arg, str):
raise TypeError("Stage.__init__ called with a non-str value: %r" % (arg,))
# continue initializing the object
Однако, подумайте, действительно ли это значение должно быть a str
или просто чем-то, что можно превратить в str
:
def __init__(self, arg):
arg = str(arg)
# ...
Если вы хотите избежать создания экземпляра в целом, вам необходимо переопределить __new__
, а не __init__
(с некоторыми предыдущими советами):
class Stage:
def __new__(cls, arg):
try:
arg = str(arg)
except ValueError:
raise TypeError("Could not convert arg to str: %r" % (arg, ))
return super().__new__(cls, arg)