jfj wrote:
I think the problem is that you know python so well that you are used
to the way things are and everything seems natural the way it is.
For a newbie, the behaviour I mentioned seems indeed a bit inconsistent.
"Inconsistent" not as in mathematics but as in "wow! I'd thought this
should work like this". Like you have a perception of the language
and then this feature changes everything. It's a different kind of
"inconsistency" and it doesn't give python a bad name or something,
nor does it break the mathematical laws of the universe.

Yup, this kind of discovery happens all the time. When you ask about it though, you should try to be clear that you're asking a question, not making an assertion. Your post said things like:


...this is not possible...
...we prove that it is indeed a function...
...Isn't that inconsistent?...

This makes you sound very certain of yourself. If you're willing to acknowledge that your understanding of Python is incomplete and ask questions instead of making assertions, you'll get a lot fewer hostile responses to your posts.

For your benefit, and the benefit of others who make this same mistake, I'll rewrite your original post in a manner that won't seem so self-important and confrontational[1].

Here's your original post:

----------------------------------------------------------------------
I don't understand.
We can take a function and attach it to an object, and then call it
as an instance method as long as it has at least one argument:

[snip example assigning function to class]

However this is not possible for another instance method:

[snip example assigning instancemethod to class]

Python complains that 'foo() takes exactly 2 arguments (1 given)'.
But by calling "b.foo(1)" we prove that it is indeed a function which takes
exactly one argument.

Isn't that inconsistent?
----------------------------------------------------------------------

And here it is rewritten to sound less confrontational:

----------------------------------------------------------------------
I don't understand.
I can take a function and attach it to an object, and then call it
as an instance method as long as it has at least one argument:

[snip example assigning function to class]

But I don't know how to do the same thing when I get the function from an instance:

[snip example assigning instancemethod to class]

Python complains that 'foo() takes exactly 2 arguments (1 given)'.

Can someone explain this behavior to me? How would I get a function from an instance and assign it to a class?
----------------------------------------------------------------------


I've left most of the terminological errors in the question since they were probably inevitably part of the question. Note however, that my rewrite of your post makes it clear that you are asking questions, not making assertions. If you don't make assertions about things you don't fully understand, you'll have a much easier time on this newsgroup.

Steve

[1] This was probably not the intended air, but that's how it came across.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to