diff options
author | Guido van Rossum <guido@python.org> | 2007-08-01 17:32:28 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-08-01 17:32:28 (GMT) |
commit | b31339fa02e48282b88f82942539ecc12e74ea63 (patch) | |
tree | 76f052b89a5bf5bfa13f584f0173559ea44f41c2 | |
parent | e78178e2c05ec2bb628b70a8b5422bb4dae63343 (diff) | |
download | cpython-b31339fa02e48282b88f82942539ecc12e74ea63.zip cpython-b31339fa02e48282b88f82942539ecc12e74ea63.tar.gz cpython-b31339fa02e48282b88f82942539ecc12e74ea63.tar.bz2 |
Add @abstractproperty.
-rw-r--r-- | Lib/abc.py | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -24,6 +24,31 @@ def abstractmethod(funcobj): return funcobj +class abstractproperty(property): + """A decorator indicating abstract properties. + + Requires that the metaclass is ABCMeta or derived from it. A + class that has a metaclass derived from ABCMeta cannot be + instantiated unless all of its abstract properties are overridden. + + Usage: + + class C(metaclass=ABCMeta): + @abstractproperty + def my_abstract_property(self): + ... + + This defines a read-only property; you can also define a read-write + abstract property using the 'long' form of property declaration: + + class C(metaclass=ABCMeta): + def getx(self): ... + def setx(self, value): ... + x = abstractproperty(getx, setx) + """ + __isabstractmethod__ = True + + class _Abstract(object): """Helper class inserted into the bases by ABCMeta (using _fix_bases()). |