<snip>


-----Original Message-----
Here's a simple scenario I can think of where instances might have
callable
attributes that don't need (or want) self automatically put in as the
first
argument:
--Reply--
But see, wouldn't it be nice, in your example, to do this:

import sys
class Logger(object) :
    writer = sys.stdout.write
    def __init__(self, writer=None) :
        if writer is not None :
            self.writer = writer
    def Log(self, message) :
        self.writer(message)

Temp = Logger()
OtherTemp = Logger()
ErrorLog = Logger(sys.stderr.write)
#At a later point in time...
messageCount = 0
def myLogger(message):
    global messageCount
    messageCount += 1
    sys.stdout.write("<" + str(messageCount) + ">" + message)
Logger.writer = myLogger
Temp.Log("SomeMessage")
OtherTemp.Log("SomeMessage")
ErrorLog.Log("SomeError")

As neither Temp nor TempOther have their own instanced function, Log would
have to fallback on the class function, which is now different, just like
any other class variable. But we can't do that as a function attached to a
class is considered an unbound method.
This inconsistency is what has me confused about the utility of this
ability.


FWIW,
if you want to add a new instance method to  an already instantiated class,
in python you can do

import new

Temp.writer = new.instancemethod(myLogger, Temp, Logger)

(Haven't tried it IronPython though..)
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to