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 hashes)