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