Khalid Al-Ghamdi wrote: > 1. >>> class k: > 2. def __init__(self,n): > 3. return n*n > 4. > 5. > 6. >>> khalid=k(3) > 7. Traceback (most recent call last): > 8. File "<pyshell#58>", line 1, in <module> > 9. khalid=k(3) > 10. TypeError: __init__() should return None, not 'int'
> Why doesn't this work? Leaving out the details, for a class A a = A(...) is essentially a shortcut for a = A.__new__(A, ...) a.__init__(...) __new__(), not __init__() determines what value is bound to the name a. > And is there way to have an > object immediately return a value or object once it is instantiated with > using a method call? You can write your own implementation of __new__(), but that is expert area and hardly ever needed. When you aren't interested in the class instance you shouldn't create one in the first place, and use a function instead: def k(n): return n*n khalid = k(3) _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor