1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] How do I correctly add type-hints to Mixin classes?

Discussão em 'Python' iniciado por Stack, Setembro 23, 2024.

  1. Stack

    Stack Membro Participativo

    Consider the following example. The example is contrived but illustrates the point in a runnable example:

    class MultiplicatorMixin:

    def multiply(self, m: int) -> int:
    return self.value * m


    class AdditionMixin:

    def add(self, b: int) -> int:
    return self.value + b


    class MyClass(MultiplicatorMixin, AdditionMixin):

    def __init__(self, value: int) -> None:
    self.value = value


    instance = MyClass(10)
    print(instance.add(2))
    print(instance.multiply(2))


    When executed this will give the following output:

    12
    20


    The code works.

    But running mypy on it, yields the following errors:

    example.py:4: error: "MultiplicatorMixin" has no attribute "value"
    example.py:10: error: "AdditionMixin" has no attribute "value"


    I understand why mypy gives this result. But the mixin classes are never used by themselves. They are always used as additional superclasses.

    For context, this is a pattern which has been used in an existing application and I am in the process of adding type-hints. And in this case, the errors are false-positives. I am thinking about rewriting the part using the mixins as I don't particularly like it and the same could probably be done with reorganising the class hierarchy.

    But I still would like to know how something like this could be properly hinted.

    Continue reading...

Compartilhe esta Página