Определите, является ли переменная экземпляром какого-либо класса - PullRequest
0 голосов
/ 14 марта 2019

Как определить, является ли переменная экземпляром в Python 3? Я считаю что-то экземпляром, если оно имеет атрибут __dict__.

Пример:

is_instance_of_any_class(5)  # should return False
is_instance_of_any_class([2, 3])  # should return False

class A:
  pass

a = A()
is_instance_of_any_class(a)  # should return True

Я видел сообщения об использовании isinstance(x, type) или inspect.isclass(x), но это даст True для класса (A), а не для экземпляра.

1 Ответ

2 голосов
/ 14 марта 2019

Я думаю, что вы понимаете, что экземпляр здесь неправильный, поскольку в Python все является объектом, поэтому 5 является объектом класса int, а [2,3] является объектом класса list и т. Д. .

isinstance(x, y) - это путь, если вы просто хотите проверить, является ли x объектом y, но если вы хотите проверить, является ли x объектом встроенного класса или вашим собственным определенным класс, то вы должны проверить существование __dict__, используя hasattr(x, '__dict__').

...