Re: Difference method vs attribut = function

Liste des GroupesRevenir à cl python 
Sujet : Re: Difference method vs attribut = function
De : hjp-python (at) *nospam* hjp.at (Peter J. Holzer)
Groupes : comp.lang.python
Date : 29. Jun 2024, 21:53:05
Autres entêtes
Message-ID : <mailman.180.1719690794.2909.python-list@python.org>
References : 1 2
Pièces jointes : signature.asc (application/pgp-signature)
On 2024-06-28 18:08:54 +0200, Ulrich Goebel via Python-list wrote:
a class can have methods, and it can have attributes, which can hold a
function. Both is well known, of course.
 
My question: Is there any difference?
 
The code snipped shows that both do what they should do. But __dict__
includes just the method,

The other way around: It includes only the attributes, not the methods.

while dir detects the method and the
attribute holding a function. My be that is the only difference?
 
 
class MyClass:
    def __init__(self):
        functionAttribute = None
       
    def method(self):
        print("I'm a method")
 
def function():
    print("I'm a function passed to an attribute")

Here is the other main difference: The object is not passed implicitely
to the function. You have no way to access mc here.

You can create a method on the fly with types.MethodType:

import types
mc.functionAttribute = types.MethodType(function, mc)


By the way: in my usecase I want to pass different functions to
different instances of MyClass. It is in the context of a database app
where I build Getters for database data and pass one Getter per
instance.

Or in this case, since each function is specific to one instance, you
could just use a closure to capture the object. But that might be
confusing to any future maintainers (e.g. yourself in 6 months), if the
method doesn't actually behave like a method.

        hp

--
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp@hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"


Date Sujet#  Auteur
29 Jun 24 o Re: Difference method vs attribut = function1Peter J. Holzer

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal