0

I am working on converting some JavaScript code into Python.

There is an if condition in the JavaScript that looks something like: if (typeof f === 'object') and then a series of actions are taken if this condition evaluates to true.

In this case f would be something like: f = { 'fields': ["user_id", "date_started", "date_ended"] }

In this case f is a dict, but it might not always be the case.

I know that in JavaScript nearly everything is considered an object. What would be the equivalent constraint to object in Python?

1
  • 1
    As you said, almost everything in JavaScript is considered an object. The only things that aren't treated as objects are primitive types such as integers, strings, booleans, etc. There are probably many types in Python that would simply be considered an object in JavaScript. Although if you're talking about types with custom properties, you should take a look at classes Commented Nov 27, 2021 at 16:13

2 Answers 2

2

In JavaScript typeof f == 'object' is true when all of the following is not true:

  • f is undefined: there is no equivalent in Python
  • f is a number, bigint or boolean: in Python this is an instance of float or int. As bool is a subclass of int, it is included.
  • f is a string: in Python this is an instance of str
  • f is a symbol: there is no equivalent in Python
  • f is a function: in Python you can use callable to detect this

Caveat: typeof null == 'object' is true, so in Python None should pass the equivalent test.

So this brings us to the following test in Python:

if not (callable(f) or isinstance(f, (int, float, str))):
    # it is an "object"
Sign up to request clarification or add additional context in comments.

Comments

1

you can use type method for getting type of variables in python:

if (type(f) is dict)

Actually, js objects in python are dictionaries! you can see more details from this link.

4 Comments

What about lists? tuples? set? An instance of any class?
@trincot My answer was only for this question, although incomplete, but your answer is more complete and better :)
Even in the question it says "In this case f is a dict, but it might not always be the case.".
@trincot Yes, I do admit my mistake!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.