Provides the Interface class and other interface utilities.
Project description
good_interface
Provides the Interface class and other utilities which can define method "interfaces" which automatically check method implementation in classes and objects.
Interfaces
An Interface is a collection of methods that are to be implemented in classes that implement this Interface. The Interface class can define Interfaces from a class skeleton.
from good_interface import Interface
@Interface
class MyInterface:
def method1(self, arg1, arg2):
pass
def method2(self, arg2):
pass
Since the interface is callable, you can call the new Interface object as a decorator on a class, which provides a check on the given class, ensuring that it implements the defined methods in the given interface.
from good_interface import Interface
@Interface
class MyInterface:
def method1(self, arg1, arg2):
pass
def method2(self, arg2):
pass
@MyInterface
class MyClass:
def method1(self, arg1, arg2):
pass
def method2(self, arg2):
pass
Calling the interface on another interface will extends the interface, adding the methods of this current interface to the new interface
from good_interface import Interface
@Interface
class MyInterface1:
def method1(self):
pass
@MyInterface1
@Interface
class MyInterface2:
def method2(self, arg1, arg2):
pass
def method3(self, arg2):
pass
# Creates:
#
# @Interface
# class MyInterface2:
# def method1(self):
# pass
#
# def method2(self, arg1, arg2):
# pass
#
# def method3(self, arg2):
# pass
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
File details
Details for the file good-interface-1.0.1.tar.gz
.
File metadata
- Download URL: good-interface-1.0.1.tar.gz
- Upload date:
- Size: 2.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6720a6c1cc75c6a5566204c9c2b2ef857985009aebb2cb45a832cf8186c16474 |
|
MD5 | 8ec7e097543f1ea00b52496c32fb9efb |
|
BLAKE2b-256 | 202bfb30b110cc7596870376ebe16a2efea4e226394d5422c03271638435e998 |