Can you please explain why a multi-part second-argument must be a tuple and not any other form of collection-type?

The signature is: isinstance(object, classinfo)
leading to "classinfo" of:

1/ a single class/type, eg int
2/ a tuple of same, eg ( int, str, )
3/ a union type, eg int | str (v3.10+)

A question was asked about this at last night's PUG-meeting. The person was using the union option, but from Python v3.8. Sorting that out, he replaced the union with a list. No-go! Before correcting to a tuple...

Why does the second argument need to be a tuple, given that any series of non-keyword arguments is a tuple; and that such a tuple will still need to be delimited by parentheses. In other words, other forms of delimiter/collection, eg list and set; being a series of elements/members would seem no different.

Yes, the underlying C operation appears to only accept a single argument (am not C-soned, mea culpa!).

There is some discussion about hashability, but isn't it coincidental rather than constructive? (again, maybe I've not understood...)

Enquiring minds want to know...


Web.Refs:
https://docs.python.org/3/library/functions.html?highlight=isinstance#isinstance
https://docs.python.org/3/c-api/object.html?highlight=isinstance#c.PyObject_IsInstance
https://docs.python.org/3/reference/datamodel.html?highlight=isinstance

--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to