Everything is an object in python - object class and type class
Marko Rauhamaa
marko at pacujo.net
Tue Jun 2 05:23:42 EDT 2015
Chris Angelico <rosuav at gmail.com>:
> On Tue, Jun 2, 2015 at 5:44 PM, Rustom Mody <rustompmody at gmail.com> wrote:
>> 1 ∈ all these
>> Are the '∈'s here same? Similar?
>
> Yes, they are. Every one of them is asserting (or asking, depending on
> your point of view) whether or not the instance to its left is a
> member of the set to its right. The sets on the right are all
> different, but the set membership operation is identical.
That is the risk of taking classes into Python. People start to obsess
about membership and ontological relationships. I think you should use
the type() function only for troubleshooting and isinstance() virtually
never.
I think objects should be understood only through their operational
semantics, ie, their methods. It doesn't matter what an object is; what
matters is what it does. Don't test it, just call it.
Yeah, I'm preaching to the choir:
Alex Martelli made an early (2000) use of the term in a message to
the comp.lang.python newsgroup:
In other words, don't check whether it IS-a duck: check whether
it QUACKS-like-a duck, WALKS-like-a duck, etc, etc, depending on
exactly what subset of duck-like behaviour you need to play your
language-games with.
<URL: http://en.wikipedia.org/wiki/Duck_typing>
Marko
PS I have written code that violates my stated rule. For example, an
argument could be a string or a list of strings for convenience.
However, this kind of testing should not be performed on anything
created with the "class" keyword. IOW, some types *are* more primitive
than others -- in our minds and in practical use.
More information about the Python-list
mailing list