Uhm, you’re right. On Wed, Sep 23, 2020 at 7:46 PM Rocco Moretti <rmoretti...@gmail.com> wrote:
> Python translates object.method() to method(object). > > > Well, yes and no. "Yes" in the sense that instance methods are internally > implemented equivalently to a free method which takes an instance as the > first parameter. "No" in the sense that from a namespace and user > perspective there typically isn't a crossover: > > >>> class TestClass: > def __init__(self, name): > self.name = name > def say(self): > print("I'm TestClass",self.name) > > >>> def recite(test_class): > test_class.say() > > >>> t = TestClass("Bob") > >>> t.say() > I'm TestClass Bob > >>> recite(t) > I'm TestClass Bob > >>> t.recite() > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > AttributeError: 'TestClass' object has no attribute 'recite' > > (As the `recite` function is in the local namespace, not in the TestClass > namespace, `t.recite()` can't find it.) > > While, due to the equivalence between free functions and member functions, > you can certainly inject such a free function into the class: > > >>> TestClass.recite = recite > >>> t.recite() > I'm TestClass Bob > > such an injection isn't universally what one sees in typical Python > programs, as anyone who's tried to do a `mylist.len()` can attest. Doing > such an injection dependent on module imports is much rarer, and certainly > not the expected "standard" behavior in Python. (It's certainly not > automatic in Python, if that was what you were trying to imply.) > > Regards, > -Rocco > > > _______________________________________________ > > Rdkit-discuss mailing list > > Rdkit-discuss@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss > >
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss