Giter Club home page Giter Club logo

abstractcp's People

Contributors

alijewers avatar reinhrst avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

alijewers

abstractcp's Issues

Classes that inherit Abstract should not require abstract class properties

Take this example:

class A(abstractcp.Abstract):
    NAME: str = abstractcp.abstract_class_property(str)


class B(A, abstractcp.Abstract):
    NAME = 'class B'


class C(B):
    NAME = 'class C'

If B inherits Abstract you get the error that an abstract property is required. If B does not inherit Abstract you naturally get the problem that it doesn't inherit Abstract and doesn't implement NAME

Adding abc.abstractmethod to an abstractcp.Abstract class

Hi there,

Is it possible to have a class which derives from both abstractcp.Abstract and the builtin abc.ABC? I would like to be able to define a base class which has both abstract class properties AND abstract methods that subclasses must override. Right now doing something along the lines of:

from abc import ABC, abstractmethod
from abstractcp import Abstract, abstract_class_property

class BaseClass(ABC, Abstract):
    foo = abstract_class_property(str)

    @abstractmethod
    def bar(self):
        pass

class SubClass(BaseClass):
    foo = "string"
    
    def bar(self):
        print("In bar")

causes an error on startup:

.../python3.8/site-packages/abstractcp/__init__.py:98: in __init_subclass__
    if isinstance(getattr(cls, name), _AbstractClassProperty):
E   AttributeError: __abstractmethods__

and removing ABC means an exception is no longer raised if the subclass does not implement the abstract method.

Any help would be appreciated, thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.