
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