On 2007-02-15, placid <[EMAIL PROTECTED]> wrote: >> > Is it possible to be able to do the following in Python? >> >> > class Test: >> > def __init__(self): >> > pass >> >> > def puts(self, str): >> > print str >> >> > def puts(self, str,str2): >> > print str,str2 >> >> > if __name__ == "__main__": >> > t = Test() >> > t.puts("hi") >> > t.puts("hi","hello") >> >> You tell us: what happened when you tried it? > > Well, when i run it i get this error "puts() takes exactly 3 arguments > (2 given)" which means that the second a time i try to define the > puts() method "overwrites" the first one
Correct. That means it's not possible to do what you wrote. >> And then what happens when you do this? >> >> class Test: >> def __init__(self): >> pass >> >> def puts(self, *args): >> print ' '.join(args) >> >> if __name__ == "__main__": >> t = Test() >> t.puts("hi") >> t.puts("hi","hello") > > but this isn't overloading. No, it isn't. [You can't overload methods in Python. Was that your question?] It is, however, the way one does what you appear to be trying to do. -- Grant Edwards grante Yow! If I am elected no at one will ever have to do visi.com their laundry again! -- http://mail.python.org/mailman/listinfo/python-list