Python class utilities
Project description
Python Class Utilities
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
Release history Release notifications | RSS feed
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 details)
File details
Details for the file class-tools-0.2.0.tar.gz
.
File metadata
- Download URL: class-tools-0.2.0.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4039b5895ac8e9d2f0d1fd3641afbdac5017f72f800440db0faf87fd9bc29c58 |
|
MD5 | 4ca68c412f55ac192e88e6a79d1bd696 |
|
BLAKE2b-256 | 76e6d473d6898fc3a308f22f3b7504f26d55022da40a9b65156a246461306506 |