TypeError: isinstance() arg 2 must be a type or tuple of types












1















If you're like me, you've probably tried:



isinstance(my_var, [list, tuple])


only to get:



TypeError: isinstance() arg 2 must be a type or tuple of types


Now I fully understand the issue (the error message is clear) and how to fix it.
I also understand the difference between a list and a tuple (mutable vs unmutable).



However, what I'm trying to understand is what the tradeoffs are for the Python interpreter to also allow for a list to be provided as isinstance arg 2? (The code anyway already needs to check whether the argument is a scalar or a tuple)



If you're like me, it would have saved quite a few having to go back-n-forth iterations applying fixes, so I'm curious if perhaps there are performance or other reasons for Python standard functions to not mix the acceptance of lists and tuples here?










share|improve this question




















  • 4





    Analagous and relevant stackoverflow.com/a/45118023/6260170

    – Chris_Rands
    Nov 23 '18 at 21:38






  • 2





    This reads more like a rant than a question. Furthermore, it's not something that's really answerable except by the python core team. All languages make questionable decisions.

    – Jared Smith
    Nov 23 '18 at 21:40








  • 1





    @JaredSmith, sorry, not meant to be a rant. Just trying to learn what the pros/cons would be for Python to also accept a list in cases like these? I've clarified the motivation behind my question a bit.

    – Hans Bouwmeester
    Nov 23 '18 at 21:50











  • It's a reasonable question, but read the answer I linked to above, there really isn't any reason to accept a list here. However, unlike the str.startswith case, it doesn't have the argument that you need a special case for a single string

    – Chris_Rands
    Nov 23 '18 at 22:01











  • The link is interesting read. Tnx. However, I would argue that assuming "all-things-being-equal" holds (which I'm not sure it does here?), user-friendliness is an important item also?

    – Hans Bouwmeester
    Nov 23 '18 at 22:09
















1















If you're like me, you've probably tried:



isinstance(my_var, [list, tuple])


only to get:



TypeError: isinstance() arg 2 must be a type or tuple of types


Now I fully understand the issue (the error message is clear) and how to fix it.
I also understand the difference between a list and a tuple (mutable vs unmutable).



However, what I'm trying to understand is what the tradeoffs are for the Python interpreter to also allow for a list to be provided as isinstance arg 2? (The code anyway already needs to check whether the argument is a scalar or a tuple)



If you're like me, it would have saved quite a few having to go back-n-forth iterations applying fixes, so I'm curious if perhaps there are performance or other reasons for Python standard functions to not mix the acceptance of lists and tuples here?










share|improve this question




















  • 4





    Analagous and relevant stackoverflow.com/a/45118023/6260170

    – Chris_Rands
    Nov 23 '18 at 21:38






  • 2





    This reads more like a rant than a question. Furthermore, it's not something that's really answerable except by the python core team. All languages make questionable decisions.

    – Jared Smith
    Nov 23 '18 at 21:40








  • 1





    @JaredSmith, sorry, not meant to be a rant. Just trying to learn what the pros/cons would be for Python to also accept a list in cases like these? I've clarified the motivation behind my question a bit.

    – Hans Bouwmeester
    Nov 23 '18 at 21:50











  • It's a reasonable question, but read the answer I linked to above, there really isn't any reason to accept a list here. However, unlike the str.startswith case, it doesn't have the argument that you need a special case for a single string

    – Chris_Rands
    Nov 23 '18 at 22:01











  • The link is interesting read. Tnx. However, I would argue that assuming "all-things-being-equal" holds (which I'm not sure it does here?), user-friendliness is an important item also?

    – Hans Bouwmeester
    Nov 23 '18 at 22:09














1












1








1


0






If you're like me, you've probably tried:



isinstance(my_var, [list, tuple])


only to get:



TypeError: isinstance() arg 2 must be a type or tuple of types


Now I fully understand the issue (the error message is clear) and how to fix it.
I also understand the difference between a list and a tuple (mutable vs unmutable).



However, what I'm trying to understand is what the tradeoffs are for the Python interpreter to also allow for a list to be provided as isinstance arg 2? (The code anyway already needs to check whether the argument is a scalar or a tuple)



If you're like me, it would have saved quite a few having to go back-n-forth iterations applying fixes, so I'm curious if perhaps there are performance or other reasons for Python standard functions to not mix the acceptance of lists and tuples here?










share|improve this question
















If you're like me, you've probably tried:



isinstance(my_var, [list, tuple])


only to get:



TypeError: isinstance() arg 2 must be a type or tuple of types


Now I fully understand the issue (the error message is clear) and how to fix it.
I also understand the difference between a list and a tuple (mutable vs unmutable).



However, what I'm trying to understand is what the tradeoffs are for the Python interpreter to also allow for a list to be provided as isinstance arg 2? (The code anyway already needs to check whether the argument is a scalar or a tuple)



If you're like me, it would have saved quite a few having to go back-n-forth iterations applying fixes, so I'm curious if perhaps there are performance or other reasons for Python standard functions to not mix the acceptance of lists and tuples here?







python tuples typeerror immutability isinstance






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 21:53







Hans Bouwmeester

















asked Nov 23 '18 at 21:27









Hans BouwmeesterHans Bouwmeester

6017




6017








  • 4





    Analagous and relevant stackoverflow.com/a/45118023/6260170

    – Chris_Rands
    Nov 23 '18 at 21:38






  • 2





    This reads more like a rant than a question. Furthermore, it's not something that's really answerable except by the python core team. All languages make questionable decisions.

    – Jared Smith
    Nov 23 '18 at 21:40








  • 1





    @JaredSmith, sorry, not meant to be a rant. Just trying to learn what the pros/cons would be for Python to also accept a list in cases like these? I've clarified the motivation behind my question a bit.

    – Hans Bouwmeester
    Nov 23 '18 at 21:50











  • It's a reasonable question, but read the answer I linked to above, there really isn't any reason to accept a list here. However, unlike the str.startswith case, it doesn't have the argument that you need a special case for a single string

    – Chris_Rands
    Nov 23 '18 at 22:01











  • The link is interesting read. Tnx. However, I would argue that assuming "all-things-being-equal" holds (which I'm not sure it does here?), user-friendliness is an important item also?

    – Hans Bouwmeester
    Nov 23 '18 at 22:09














  • 4





    Analagous and relevant stackoverflow.com/a/45118023/6260170

    – Chris_Rands
    Nov 23 '18 at 21:38






  • 2





    This reads more like a rant than a question. Furthermore, it's not something that's really answerable except by the python core team. All languages make questionable decisions.

    – Jared Smith
    Nov 23 '18 at 21:40








  • 1





    @JaredSmith, sorry, not meant to be a rant. Just trying to learn what the pros/cons would be for Python to also accept a list in cases like these? I've clarified the motivation behind my question a bit.

    – Hans Bouwmeester
    Nov 23 '18 at 21:50











  • It's a reasonable question, but read the answer I linked to above, there really isn't any reason to accept a list here. However, unlike the str.startswith case, it doesn't have the argument that you need a special case for a single string

    – Chris_Rands
    Nov 23 '18 at 22:01











  • The link is interesting read. Tnx. However, I would argue that assuming "all-things-being-equal" holds (which I'm not sure it does here?), user-friendliness is an important item also?

    – Hans Bouwmeester
    Nov 23 '18 at 22:09








4




4





Analagous and relevant stackoverflow.com/a/45118023/6260170

– Chris_Rands
Nov 23 '18 at 21:38





Analagous and relevant stackoverflow.com/a/45118023/6260170

– Chris_Rands
Nov 23 '18 at 21:38




2




2





This reads more like a rant than a question. Furthermore, it's not something that's really answerable except by the python core team. All languages make questionable decisions.

– Jared Smith
Nov 23 '18 at 21:40







This reads more like a rant than a question. Furthermore, it's not something that's really answerable except by the python core team. All languages make questionable decisions.

– Jared Smith
Nov 23 '18 at 21:40






1




1





@JaredSmith, sorry, not meant to be a rant. Just trying to learn what the pros/cons would be for Python to also accept a list in cases like these? I've clarified the motivation behind my question a bit.

– Hans Bouwmeester
Nov 23 '18 at 21:50





@JaredSmith, sorry, not meant to be a rant. Just trying to learn what the pros/cons would be for Python to also accept a list in cases like these? I've clarified the motivation behind my question a bit.

– Hans Bouwmeester
Nov 23 '18 at 21:50













It's a reasonable question, but read the answer I linked to above, there really isn't any reason to accept a list here. However, unlike the str.startswith case, it doesn't have the argument that you need a special case for a single string

– Chris_Rands
Nov 23 '18 at 22:01





It's a reasonable question, but read the answer I linked to above, there really isn't any reason to accept a list here. However, unlike the str.startswith case, it doesn't have the argument that you need a special case for a single string

– Chris_Rands
Nov 23 '18 at 22:01













The link is interesting read. Tnx. However, I would argue that assuming "all-things-being-equal" holds (which I'm not sure it does here?), user-friendliness is an important item also?

– Hans Bouwmeester
Nov 23 '18 at 22:09





The link is interesting read. Tnx. However, I would argue that assuming "all-things-being-equal" holds (which I'm not sure it does here?), user-friendliness is an important item also?

– Hans Bouwmeester
Nov 23 '18 at 22:09












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53453117%2ftypeerror-isinstance-arg-2-must-be-a-type-or-tuple-of-types%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53453117%2ftypeerror-isinstance-arg-2-must-be-a-type-or-tuple-of-types%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Create new schema in PostgreSQL using DBeaver

Deepest pit of an array with Javascript: test on Codility

Costa Masnaga