TETRIS2000/propertize/__init__.py
2018-08-19 04:49:56 +02:00

42 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
"""
Class decorators:
@propertize buids derived classes
with a properties for each attribute with accessors
@convert_attributes_name buids derived classes
with attributes name converted by a function
Accessors are found among the class's methods (its callable attributes)
if the method's name start with getters_prefix or setters_prefix.
If getters_prefix is "", creates property for each method named "method_name"
only if a setter named "setters_prefix"+"method_name" is found and vice_versa.
Attributes are named by their accessors' name minus the prefix.
You can use @rename_attributes(snake_case) to rename all class' attributes
:Example:
>>> from propertize import propertize, snake_case
>>> class AccessorsClass:
... def __init__(self):
... self._private_attribute = 0
... def getAttribute(self):
... return self._private_attribute
... def setAttribute(self, value):
... self._private_attribute = value
...
>>> @propertize("get", "set")
... @rename_attributes(snake_case)
... class PropertiesClass(AccessorsClass): pass
...
>>> instance = PropertiesClass()
>>> instance.attribute = 1
>>> instance.attribute
1
"""
from .convert_string import snake_case
from .rename_attributes import rename_attributes
from .propertize import propertize