Since Python 3.3 a bug was fixed meaning the property() decorator is now correctly identified as abstract when applied to an abstract method.

Note: Order matters, you have to use @property above @abstractmethod

Python 3.3+: (python docs):

from abc import ABC, abstractmethod

class C(ABC):
    @property
    @abstractmethod
    def my_abstract_property(self):
        ...

Python 2: (python docs)

from abc import ABCMeta, abstractproperty

class C:
    __metaclass__ = ABCMeta

    @abstractproperty
    def my_abstract_property(self):
        ...
Answer from James on Stack Overflow
🌐
Python
docs.python.org › 3 › library › abc.html
abc — Abstract Base Classes
This special case is deprecated, as the property() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC): @property @abstractmethod def my_abstract_property(self): ...
🌐
Python.org
discuss.python.org › python help
Abstract, generic class properties beyond Python 3.13 - Python Help - Discussions on Python.org
May 13, 2024 - Up until now (Python 3.12) I’ve been using this pattern to get the concrete type out of an abstract generic at run time: DataIn = TypeVar('DataIn', infer_variance=True) class Handler(Generic[DataIn], ABC): @classmethod @property def processable(cls) -> type[DataIn]: return get_args(get_original_bases(cls)[0])[0] @abstractmethod def handle(self, msg: Msg[DataIn]): ... And it all type checks and works great, but: # Class properties are deprecated in Pytho...
🌐
Readthedocs
python-can.readthedocs.io › en › 3.1.1 › _modules › abc.html
abc — python-can 3.1.0 documentation - Read the Docs
""" __isabstractmethod__ = True def __init__(self, callable): callable.__isabstractmethod__ = True super().__init__(callable) class abstractstaticmethod(staticmethod): """A decorator indicating abstract staticmethods. Similar to abstractmethod. Usage: class C(metaclass=ABCMeta): @abstractstaticmethod def my_abstract_staticmethod(...): ... 'abstractstaticmethod' is deprecated.
🌐
pytz
pythonhosted.org › edx-opaque-keys › _modules › abc.html
abc — opaque_keys documentation
Usage: class C(metaclass=ABCMeta): @abstractmethod def my_abstract_method(self, ...): ... """ funcobj.__isabstractmethod__ = True return funcobj class abstractclassmethod(classmethod): """ A decorator indicating abstract classmethods. Similar to abstractmethod. Usage: class C(metaclass=ABCMeta): @abstractclassmethod def my_abstract_classmethod(cls, ...): ... 'abstractclassmethod' is deprecated.
🌐
Readthedocs
python-can.readthedocs.io › en › 3.3.4 › _modules › abc.html
abc — python-can 3.3.4 documentation - Read the Docs
""" __isabstractmethod__ = True def __init__(self, callable): callable.__isabstractmethod__ = True super().__init__(callable) class abstractstaticmethod(staticmethod): """A decorator indicating abstract staticmethods. Similar to abstractmethod. Usage: class C(metaclass=ABCMeta): @abstractstaticmethod def my_abstract_staticmethod(...): ... 'abstractstaticmethod' is deprecated.
🌐
GitHub
github.com › python › typing › issues › 577
Abstract class methods? · Issue #577 · python/typing
August 1, 2018 - Currently, annotating a method with both @abstractmethod and @classmethod results in a runtime error.
Author   sid-kap
Find elsewhere
🌐
Python
mail.python.org › pipermail › python-dev › 2019-May › 157426.html
[Python-Dev] deprecation of abstractstaticmethod and abstractclassmethod
May 15, 2019 - On Wed, May 15, 2019, 12:39 Ethan ... abstractstaticmethod were > deprecated, apparently because they were redundant with the new technique > of calling `classmethod` or `staticmethod` followed by a call to > `abstractmethod`. To put it in code: > > # deprecated > > class Foo(ABC): ...
🌐
Learnscript
learnscript.net › en › python › classes › abstract-classes
Introduction to Python Abstract Classes and Abstract Methods; Define and Implement Python Abstract Classes and Abstract Methods - Python Tutorial | Learn
August 12, 2024 - The @abstractmethod decorator can be used in conjunction with other decorators (@classmethod, @staticmethod, @property, etc.) to form more complex method definitions, such as abstract class methods, abstract static methods, abstract properties, etc. Python 3.2 used to include some other decorators on abstraction that were deprecated in Python 3.3, they are @abstractclassmethod, @abstractstaticmethod, @abstractproperty.
🌐
Python
peps.python.org › pep-0702
PEP 702 – Marking deprecations using the type system | peps.python.org
For example, an object may implement a typing.Protocol, but one of the methods required for protocol compliance is deprecated. As scenarios such as this one appear complex and relatively unlikely to come up in practice, this PEP does not mandate that type checkers detect them. As an example, consider this library stub named library.pyi: from warnings import deprecated @deprecated("Use Spam instead") class Ham: ...
🌐
GitHub
github.com › microsoft › pylance-release › issues › 3123
"parameter is not accessed" for `abstractclassmethod`/`abstractstaticmethod` · Issue #3123 · microsoft/pylance-release
August 1, 2022 - Python version (& distribution if applicable, e.g. Anaconda): 3.9 conda · class MyAbstractClass(ABC): @abstractclassmethod def myclassmethod(cls, input_1): # input_1 not accessed warning ... @abstractstaticmethod def mystaticmethod(input_1): # input_1 not accessed warning ... @abstractmethod def from_json(self, input_1): # expected behavior, pylance ignores this ... No warning should pop up, just like for abstract methods ·
Author   dasturge
🌐
Python
docs.python.domainunion.de › 3 › library › abc.html
abc — Abstract Base Classes — Python 3.14.2 documentation
This special case is deprecated, as the property() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC): @property @abstractmethod def my_abstract_property(self): ...
🌐
The Teclado Blog
blog.teclado.com › python-abc-abstract-base-classes
How to Write Cleaner Python Code Using Abstract Classes
October 26, 2022 - We use @abstractmethod to define a method in the abstract base class and combination of @property and @abstractmethod in order to define an abstract property. I hope you learnt something new today! If you're looking to upgrade your Python skills even further, check out our Complete Python Course.
🌐
JetBrains
jetbrains.com › help › inspectopedia › PyDeprecation.html
Deprecated function, class, or module | Inspectopedia Documentation
March 12, 2025 - Reports usages of Python functions, or methods that are marked as deprecated and raise the DeprecationWarning or PendingDeprecationWarning warning. Also, this inspection highlights usages of abc.abstractstaticmethod, abc.abstractproperty, and abc.abstractclassmethod decorators. ... class Foo: @property def bar(self): import warnings warnings.warn("this is deprecated", DeprecationWarning, 2) return 5 foo = Foo() print(foo.bar)
🌐
Python.org
discuss.python.org › ideas
[abc] Add abstract attributes via `abstract` type-hint - Ideas - Discussions on Python.org
April 24, 2023 - Feature or enhancement Add a special generic type hint abstract, that allows specifying that subclasses must implement an attribute. from abc import ABC, abstract class Foo(ABC): myattr: abstract[int] # <- subcla…
🌐
GeeksforGeeks
geeksforgeeks.org › python › abstract-classes-in-python
Abstract Classes in Python - GeeksforGeeks
Explanation: make_sound() is an abstract method in the Animal class, so it doesn't have any code inside it. If you try to instantiate Animal directly, Python will raise a TypeError since the method is not implemented.
Published   September 3, 2025
🌐
PyPI
pypi.org › project › Deprecated
Deprecated · PyPI
from deprecated import deprecated @deprecated(version='1.2.1', reason="You should use another function") def some_old_function(x, y): return x + y class SomeClass(object): @deprecated(version='1.3.0', reason="This method is deprecated") def some_old_method(self, x, y): return x + y some_old_function(12, 34) obj = SomeClass() obj.some_old_method(5, 8) ... $ pip install Deprecated $ python hello.py hello.py:15: DeprecationWarning: Call to deprecated function (or staticmethod) some_old_function.
      » pip install Deprecated
    
Published   Oct 30, 2025
Version   1.3.1