No project description provided
Project description
Implements the impl
pattern*
/* inspired by Rust
Useful when it is needed to extend a class (usually 3d party) with some methods
Install
pip install impl_pattern
or
poetry add impl_pattern
Usage
Regular methods
from impl_pattern import impl
class Sample:
def __init__(self):
self.value = 10
@impl(Sample)
def plus_one(self: Sample):
self.value += 1
s = Sample()
s.plus_one()
print(s.value)
# 11
it works with async methods as well
from asyncio import sleep
@impl(Sample)
async def plus_one(self: Sample):
await sleep(1)
self.value += 1
s = Sample()
await s.plus_one()
print(s.value)
# 11
Class methods
To register function as a classmethod you can use impl_classmethod
decorator
from impl_pattern import impl_classmethod
class Sample:
value = 10
@impl_classmethod(Sample)
def plus_one(cls):
cls.value += 1
Sample.plus_one()
print(Sample.value)
# 11
This works with async methods too
from asyncio import sleep
@impl_classmethod(Sample)
async def plus_one(cls):
await sleep(1)
self.value += 1
await Sample.plus_one()
print(Sample.value)
# 11
Static methods
Static methods use the same syntax but with the impl_staticmethod
decorator
from impl_pattern import impl_staticmethod
class Sample:
...
@impl_staticmethod(Sample)
def get_one():
return 1
print(Sample.get_one())
# 1
This works with async methods too
from asyncio import sleep
@impl_staticmethod(Sample)
async def get_one():
return 1
print(await Sample.get_one())
# 1
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
impl_pattern-0.1.1.tar.gz
(6.5 kB
view hashes)
Built Distribution
Close
Hashes for impl_pattern-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d5518f335260c7f858558e47029bc489205d960a44c8abde28495592a6ddf55 |
|
MD5 | 5a1c6bd7505b4a28119c1195f9729ac1 |
|
BLAKE2b-256 | 113438f8b291141ea191855228a2c6b5d5d53fb928459864d037748d7a4c8017 |