У меня есть класс A
, который может быть вызван. У меня также есть подкласс A
, называемый B
, который я хочу сделать не вызываемым. Когда я пытаюсь позвонить, он должен поднять нормальный «не вызываемый» TypeError
.Подкласс класса, вызываемого вызовом
class A():
def __call__(self):
print "I did it"
class B(A):
def __call__(self):
raise TypeError("'B' object is not callable")
Как вы можете видеть, что мое решение прямо сейчас, чтобы поднять копию нормального TypeError
. Это кажется неправильным, поскольку я просто копирую текст стандартного исключения python. Было бы лучше (на мой взгляд), если бы был способ пометить подкласс как не вызываемый, а затем обработать этот атрибут python.
Каков наилучший способ сделать класс B
не вызываемым, учитывая, что это подкласс вызываемого класса A
?
Хмм. Вы рассмотрели стандарт ['NotImplementedError'] (http://docs.python.org/2/library/exceptions.html#exceptions.NotImplementedError)? – woozyking
Возможно, вы захотите переосмыслить свой дизайн. Если B не реализует метод, который объявляет A, можете ли вы действительно сказать, что B является своего рода A? – Kevin