Pelmen wrote: >>>>class Test: > > def __getattr__(self, attr): > print attr > > def foo(x): > print x > > >>>>t = Test() >>>>print t > > __str__ > > Traceback (most recent call last): > File "<pyshell#23>", line 1, in -toplevel- > print t > TypeError: 'NoneType' object is not callable > > what i have to do? define __str__ explicitly?
Yes. Or subclass "object" as it has a default __str__ already. (By the way, you do realize that the NoneType message comes because your __getattr__ is returning None, don't you? So technically you could also return a real value (in this case a callable) and it would also work, though it's very likely not what you wanted. class Test: def __getattr__(self, name): def callable_attribute(): return 'i am attr %s' % name return callable_attribute >>> t = Test() >>> print t i am attr __str__ -Peter -- http://mail.python.org/mailman/listinfo/python-list