Using my routines as functions AND methods

Alan Gauld learn2program at gmail.com
Thu Jan 4 05:44:26 EST 2024


On 04/01/2024 04:17, Thomas Passin via Python-list wrote:

>> I'm probably missing something obvious here but can't you
>> just assign your function to a class member?
>>
>> def myFunction(obj, ...): ...
>>
>> class MyClass:
>>      myMethod = myFunction
> 
> That works if you assign the function to a class instance, but not if 
> you assign it to a class.
> 
> def f1(x):
>      print(x)
> f1('The plain function')
> 
> class Class1:
>      pass
> 
> class Class2:
>      pass
> 
> c1 = Class1()
> c1.newfunc = f1
> c1.newfunc('f1 assigned to instance') # Works as intended
> 
> Class2.newfunc = f1
> c2 = Class2()
> c2.newfunc('f1 assigned to class')  # Complains about extra argument

Yes but I did the assignment inside the class definition and
that seemed to work just fine:

>>> def g(obj, st): print(st, obj.v)
...
>>> class D:
...    def __init__(self,v): self.v = v
...    m = g
...
>>> d = D(66)
>>> g(d,'val = ')
val =  66
>>> d.m('v = ')
v =  66


-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos




More information about the Python-list mailing list