In Python 2.x when you want to mark a method as abstract, you can define it like so:
class Base:
def foo(self):
raise NotImplementedError(\"Subcl
It seem that this question was open to both instance attributes and class attributes, I'll focus on the first topic only.
So, for instance attributes, an alternate answer to Evan's is to define a mandatory field using pyfields:
from pyfields import field
class Base(object):
example = field(doc="This should contain an example.")
b = Base()
b.example
yields
pyfields.core.MandatoryFieldInitError:
Mandatory field 'example' has not been initialized yet
on instance <__main__.Base object at 0x000002C1000C0C18>.
Granted, it does not provide you with the ability to edit the error message by talking about subclasses. But in a way it is more realistic to not talk about subclasses - indeed in python, attributes can be overridden on instances of the base class - not only in subclasses.
Note: I'm the author of pyfields
. See documentation for details.