On Thu, Jan 14, 2021 at 02:05:50PM +0300, Paul Sokolovsky wrote:
[...]
> Semantically, Python can achieve the same with "imperative" syntax like:
>
> def mixin_method(self, args):
> ...
> Cls.mixin_method = mixin_method
>
>
> The question then: what are the best practices in *declarative* syntax
> to achieve the same effect in Python? (but of course, unlike Ruby,
> there should be explicit syntactic marker that we augment existing
> class, not redefine it).
def Cls.mixin_method(self, args):
...
has been suggested as syntax for adding new methods to an existing
class. I would use that occasionally.
Even more so, the generalisation:
def obj.method(self, args):
...
to add a method to any instance, not just to a class. (Assuming that the
instance has a writable `__dict__` of course -- you can't add attributes
to a float or tuple, for example.)
The advantage is that there is no new keyword required.
--
Steve
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/FOG24VZMOCBKEI5NIHWNP2J2NTVLP4CS/
Code of Conduct: http://python.org/psf/codeofconduct/