An ABC implementation without metaclass
Project description
plain-abc
An ABC implementation without metaclass.
It is a little bit annoying to have metaclass conflict, especially when trying to use ABC along with other libraries.
plain-abc
provides a simple ABC implementation without metaclass.
Solving metaclass conflict without plain-abc
Here is an example of metaclass conflict and a solution to mix ABCMeta and other metaclasses.
from abc import ABC, ABCMeta, abstractmethod
class _SomeHiddenMetaclass(type):
pass
class Base(metaclass=_SomeHiddenMetaclass):
pass
class IFoo(ABC):
@abstractmethod
def foo(self): ...
# oh no, metaclass conflict!
# class Foo(Base, IFoo):
# def foo(self): ...
# create a new metaclass for either IFoo or Foo
class NewMetaclass(_SomeHiddenMetaclass, ABCMeta):
...
class Foo(Base, IFoo, metaclass=NewMetaclass):
def foo(self): ...
Usage
But you can also use plain-abc
to solve the problem.
from abc import abstractmethod
from plain_abc import PlainABC
class _SomeHiddenMetaclass(type):
pass
class Base(metaclass=_SomeHiddenMetaclass):
pass
class IFoo(PlainABC):
@abstractmethod
def foo(self): ...
class Foo(Base, IFoo):
def foo(self): ...
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
plain_abc-0.0.2.tar.gz
(4.3 kB
view hashes)
Built Distribution
Close
Hashes for plain_abc-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34e2e26ee8a612f43146225aff3b53f83b9cede7af5aa0aaba511c20e8515e76 |
|
MD5 | 96f9c6e47bec3d613380db21e495e0f4 |
|
BLAKE2b-256 | e0afb4d464ac5facf32f494c25c96db9378a69ba3b208281e10c7df0a612f26d |