This package add a callable descriptor called method descriptor which can apply on methods.
Project description
fancy-descriptors
This package add a callable descriptor called method descriptor which can apply on methods.
Usage
a simplest example:
from fancy import descriptors as fd
class MyDescriptor(fd.MethodDescriptor):
pass
class MyClass:
@MyDescriptor
def method_a(self):
pass
# or
@MyDescriptor.bind()
def method_b(self):
pass
# after a MyClass object is created.
my_obj = MyClass()
assert isinstance(my_obj.method_a, MyDescriptor)
# returned {"method_a": <MyDescriptor object>, "method_b": <MyDescriptor object>}
MyDescriptor.get_marked_method(my_obj)
the statement MyDescriptor.get_marked_method(my_obj) will get all marked methods' descriptors
with metadata
import fancy.descriptors as fd
class MyDescriptor(fd.MethodDescriptor):
def __init__(self,method, value: int, factory = None):
"""
method must at first place of argument
factory is a method descriptor factory for underlying descriptor
"""
super().__init__(method, factory)
self._value = value
def get_value(self):
return self._value
class MyClass:
# you cannot directly use MyDescriptor as decorator
# if the constructor of the descriptor has over one required argument
# you must use .bind() to instead.
@MyDescriptor.bind(value=1)
def method_annotated(self):
pass
my_obj = MyClass()
my_obj.method_annotated.get_value() # returned 1
Inheritance
from fancy import descriptors as fd
class MyBaseDescriptor(fd.MethodDescriptor):
pass
class MyDescriptor(MyBaseDescriptor):
pass
class MyClass:
@MyBaseDescriptor
def method_base(self):
pass
@MyDescriptor
def method_sub(self):
pass
my_obj = MyClass()
MyBaseDescriptor.get_marked_method(my_obj) # returned both method_base and method_sub
MyDescriptor.get_marked_method(my_obj) # returned only method_sub
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
Built Distribution
Close
Hashes for fancy_descriptor-1.0.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 232c71afc39a6ab249921f5a7dfb956e4e31b74a40a41b4052f81025af2aee81 |
|
MD5 | 344fba58f25be63b9093e8e7e1d367ec |
|
BLAKE2b-256 | 80eefe62c9dc63ab64ffed2b104b6a9039a48b9cd4486101d5c80cd06413f801 |