Skip to main content

Simple Python classproperty decorator

PyPI package PyPI version

This module provides a simple way for defining class properties.


Deprecation notice: Starting with Python 3.9 the @classmethod descriptor can now wrap other descriptors like @property. See the official documentation for the announcement: https://docs.python.org/3.9/library/functions.html#classmethod

This means if you are using Python >= 3.9 you can simply realize a classproperty with:

class NewClass():
    _atr = "val"

    @classmethod
    @property
    def attr(cls):
        return cls._atr

So in this case this package is not needed anymore. I will still try to maintain this package until Python 3.8 reaches EOL which will be in October 2024.


Install

You can install this Python module via pip:

pip install simple-classproperty

Otherwise the module can be downloaded from PyPI: https://pypi.org/project/simple-classproperty/

Usage

  1. Import the module:
    from simple_classproperty import ClasspropertyMeta, classproperty
    
  2. Create a class with a class property:
    class NewClass(metaclass=ClasspropertyMeta):
        _attr = "val"
    
        @classproperty
        def attr(cls):
            return cls._attr
    
    Don't forget to set the metaclass!
  3. (Optional) Define also a setter and deleter for the newly created class property (this works like the standard python property):
    @attr.setter
    def attr(cls, value):
        cls._attr = value
    
    @attr.deleter
    def attr(cls):
        del cls._attr
    

Tips

The classproperty is also accessible from an instance:

instance = NewClass()
print(instance.attr)  # "val"

When the value of the property is changed from an instance object, the class property will be changed. All other instances will have this new value:

instance1 = NewClass()
instance2 = NewClass()

instance1.attr = "new"

print(instance1.attr)  # "new"
print(instance2.attr)  # "new"
print(NewClass.attr)   # "new"

This behavior is the same when a property gets deleted from an instance.

Metadata

Release files for simple-classproperty 1.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simple-classproperty 1.4.2
File Size Uploaded
simple-classproperty-1.4.2.tar.gz 15.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simple-classproperty 1.4.2
File Interpreter ABI Platform
simple_classproperty-1.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 32.3 kB

Release files / simple-classproperty-1.4.2.tar.gz

Download URL simple-classproperty-1.4.2.tar.gz
Size 15.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7dc0382e76e367aa79a26cf3fad0cee5380a124d64e6833c45a8b8ca8788c56b
BLAKE2b-256 checksum
How to use checksums
b177e59fa2e4f63d1b9aafa51960257637b2764e53590dff8dde400235e0106f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.7.12

Release files / simple_classproperty-1.4.2-py3-none-any.whl

Download URL simple_classproperty-1.4.2-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a4bd5c868d013edcb6bf300de79154eec0dbd96960bb529f445c3b94b5df8b19
BLAKE2b-256 checksum
How to use checksums
78db84a586b168d93a8b98872fb4711d6ce65035e91b60fcfe52b61a3d8a6b20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.7.12

Release history Release notifications | RSS feed

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.0.0

2 release files

2.0.0

2 release files

This release

1.4.2 This release

2 release files

1.4.1

2 release files

1.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3

2 release files

1.2

2 release files

1.1

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page