You may be interested in the excellent traitlets library: 
https://traitlets.readthedocs.io/en/stable/

On Friday, February 7, 2020 at 11:11:59 AM UTC-5, Soni L. wrote:
>
> I'd like to see traits some day, with a syntax similar to this one: 
>
> trait Trait: 
>    def x(self): 
>      raise NotImplementedError 
>    def y(self): 
>      raise NotImplementedError 
>
> trait Anoher: 
>    def x(self): 
>      raise NotImplementedError 
>    def y(self): 
>      raise NotImplementedError 
>
> def foo(Trait(x)): 
>    x.x() 
>
> class Bar: 
>    def y(self): 
>      print("hello") 
>    impl Trait: 
>      def x(self): 
>        self.y()  # resolves to Bar.y 
>    impl Another: 
>      def x(self): 
>        raise ValueError 
>
> foo(Bar())  # prints 'hello' 
> Trait(Bar()).x()  # also prints 'hello' 
> Bar().x()  # AttributeError: ambiguous reference to trait method x 
>
> if the trait isn't used in the function definition you get the raw 
> object, where name conflicts between traits (but not between traits and 
> inherent methods) result in an error about name conflicts. otherwise you 
> get a friendly wrapper. 
> _______________________________________________
> Python-ideas mailing list -- python...@python.org <javascript:>
> To unsubscribe send an email to python-id...@python.org <javascript:>
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-ideas@python.org/message/MMTEZRNSPHB55IYCKJ2E2CXDRN7KYURC/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/F2MKZJ4QTGB7RC6JE4H3I3MTVAFMDU6T/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to