Skip to content

@classproperty decorator for python that works just like @Property.

License

Notifications You must be signed in to change notification settings

romnn/classprop

Repository files navigation

@classprop

Build Status PyPI version License Test Coverage

Small python package that provides a @classproperty decorator for python classes that works just like @property except for class variables!

$ pip install classprop

Use it just like builtin @property's:

from classprop import classprop

class TestClass:
    _internal = "Hello, World"

    @classprop
    def my_class_prop(self) -> str:
        return self._internal

    @my_class_prop.setter
    def my_class_prop(self, value: str) -> None:
        self._internal = value



foo = TestClass()
assert foo.my_class_prop == "Hello, World"

baz = TestClass()
assert baz.my_class_prop == "Hello, World"

baz.my_class_prop = "Changed"
assert foo.my_class_prop == "Changed"

Development

For detailed instructions see CONTRIBUTING.

Tests

You can run tests with

$ invoke test
$ invoke test --min-coverage=90     # Fail when code coverage is below 90%
$ invoke type-check                 # Run mypy type checks

Linting and formatting

Lint and format the code with

$ invoke format
$ invoke lint

All of this happens when you run invoke pre-commit.

Note

This project is still in the alpha stage and should not be considered production ready.