I think you may be a bit late. Have you heard about PEP 544? -- Ivan
On Tue, 22 Jan 2019 at 11:50, James Lu <[email protected]> wrote: > So here’s an interesting idea, not a proposal yet. > > In C++20, a Concept is a list of Boolean expressions with a name that can > be used in place of a type in a templated (ie type-generic) function. > > from typing import Concept > Iterator = Concept(lambda o: hasattr(o, "__iter__", lambda o: iter(o) != > NotImplemented) > # Concept inheritance > Iterable = Concept(lambda o: hasattr(o, "__next__"), Iterator) > > You could use concepts to define many practical “real-world” duck types. > > A concept is like an opt-in duck typing type assertion. Since it’s a part > of type annotation syntax, assertions can be generated automatically by > looking at assertions. > > You would use a Concept like any other type in type annotations. > > Marko, how do you think Concepts might integrate with icontract? (I’m > imagining overriding an import hook to automatically add contracts to > functions with concepts.) How frequently do you use duck typing at > Parquery? How might Concepts affect how often you used duck typing? > _______________________________________________ > Python-ideas mailing list > [email protected] > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list [email protected] https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
