Skip to main content

Python class utilities

Project description

Python Class Utilities

pipeline status coverage report documentation PyPI

class-tools is a collection of utilities for Python classes that the author frequently needs.

What can I do with class-tools?

Quickly Add Properties to Classes

from class_tools.decorators import wrapper_property

@wrapper_property("name", default=lambda: "Bob", doc="The dog's name")
@wrapper_property("toy", default=lambda: "ball")
@wrapper_property("sharp_teeth", default=lambda: 4, type=int)
class Dog:
    pass

dog = Dog()
dog.__doc__
# "The dog's name"
dog.name
# 'Bob'
dog.toy
# 'ball'
dog.sharp_teeth = "4" # (set as a string value)
dog.sharp_teeth
# 4 (returned as int)

Add a Pretty __repr__ Method

from class_tools.decorators import *

@with_init_from_properties()
@with_repr_like_init_from_properties()
@wrapper_property("name")
@wrapper_property("furcolor")
class Cat:
    pass

cat = Cat(name="Lucy", furcolor="white")
cat
# Cat(
#     furcolor = 'white',
#     name = 'Lucy'
# )

Make Classes Comparable by Properties

from class_tools.decorators import *

@with_eq_comparing_properties()
@wrapper_property("name")
@wrapper_property("furcolor")
class Cat:
    pass

lucy = Cat()
lucy.name = "Lucy"
lucy.furcolor = "white"
lucy_clone = Cat()
lucy_clone.name = "Lucy"
lucy_clone.furcolor = "white"
gary = Cat()
gary.name = "Gary"
lucy == gary
# False
lucy == lucy_clone
# True

All of the Above

from class_tools.propertyobject import PropertyObject
from class_tools.decorators import wrapper_property

@wrapper_property("name")
@wrapper_property("height", type=float)
@wrapper_property("friends", type=list, default=list)
class Giraffe(PropertyObject):
		pass

matt = Giraffe(name="Matt")
matt.height = 3
gunther = Giraffe(name="Gunther")
gunther.friends.append(matt)
gunther
# Giraffe(
#     friends=[Giraffe(
#         friends=[],
#         height=3.0,
#         name='Matt'
#     )],
#     height=None,
#     name='Gunther'
# )

Installation

The class-tools package is best installed via pip. Run from anywhere:

python3 -m pip install --user class-tools

This downloads and installs the package from the Python Package Index.

You may also install class-tools from the repository root:

python3 -m pip install --user .

Documentation

Documentation of the class-tools package can be found here on GitLab.

Also, the command-line help page python3 -m class-tools -h is your friend.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

class-tools-0.2.0.tar.gz (18.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page