Рубрики
Без рубрики

Python vars () – Найти атрибут __dict__

Привет всем! В этой статье мы посмотрим на использование функции Python vars (), которая возвращает атрибут __dict__ объекта.

Автор оригинала: Pankaj Kumar.

Привет всем! В этой статье мы посмотрим на использование Python vars () Функция, которая возвращает __dict__ атрибут объекта.

Это редкая функция, но она помогает посмотреть, как вы можете использовать его, так как это полезно в определенных ситуациях. Давайте посмотрим на эти ситуации сейчас, используя иллюстративные примеры!

Синтаксис Python vars ()

Эта функция принимает объект obj и имеет форму:

vars([obj])

Это возвращает __dict__ атрибут obj Содержит все атрибуты объекта, которые могут быть списаны.

Здесь obj Может быть любой модуль/класс/экземпляр класса и т. Д.

Здесь есть пара случаев, в зависимости от типа аргумента и количества аргументов тоже.

  • Если вы не предоставляете никаких аргументов, Python vars () будет вести себя как Местные жители () Способ, который возвращает словарь, который имеет текущую локальную таблицу символов.
  • Так как он возвращает __dict__ Атрибут, это объект не имеет этого атрибута, он поднимет Типеррор исключение.

Давайте теперь посмотрим на некоторые примеры, связанные с разными объектами.

Использование Python vars () без каких-либо аргументов

Как упоминалось ранее, это будет действовать как Местные жители () Способ и вернуть словарь локального символа таблицы.

print(vars())

Выход

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x108508390>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Users/vijay/home/python_vars_function.py', '__cached__': None, 'Data': , 'd': <__main__.Data object at 0x108565048>, 'math': }

Использование Python vars () на объекте класса

Если obj это тип класса, или экземпляр класса, давайте узнаем, что vars () делает в этом случае.

Давайте создадим пример класса MyClass и определить некоторые атрибуты на это __init __ () метод.

class MyClass:
    def __init__(self, i, j):
        self.a = i
        self.b = j

m = MyClass(10, 20)
print(vars(m))
print(vars(MyClass))

Выход

{'a': 10, 'b': 20}
{'__module__': '__main__', '__init__': , '__dict__': , '__weakref__': , '__doc__': None}

Как вы можете наблюдать, для экземпляра класса vars () Вернул все соответствующие атрибуты А и B вместе со своими ценностями.

Тогда как в случае класса MyClass , он инкапсулирован под Главная модуль, а имеет __init__ Метод, наряду с __dict__ атрибут класса.

vars () Звонит все методы, такие как __repr__ , __dict__ , так далее.

Итак, удобнее, если вы сможете вызвать эту функцию напрямую, а не вызов методам объединения. (Хотя нет никакой разницы как таковой)

Точно так же вы можете использовать vars () на других объектах и классах, как утра и Список Отказ

print(vars(str))
print(vars(list))

Это покажет все соответствующие атрибуты и методы экземпляра для обоих классов.

Использование vars () на модуле

Мы также можем использовать эту функцию на модуле, чтобы узнать все, что он содержит методы, а также другую соответствующую информацию и даже DocStrings!

Например, если вы хотите посмотреть на встроенный модуль Антигравитар (что это пасхальное яйцо!) Вы им импортируете, и посмотрите на Варс (антигравитация)

import antigravity

print(vars(antigravity))

Выходной вывод (последние несколько строк)

 {'__name__': 'antigravity', '__doc__': None, '__package__': '', 'TimeoutError': , 'open': , 'quit': Use quit() or Ctrl-Z plus Return to exit, 'exit': Use exit() or Ctrl-Z plus Return to exit, 'copyright': Copyright (c) 2001-2018 Python Software Foundation.
All Rights Reserved.

Copyright (c) 2000 BeOpen.com.
All Rights Reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.
}

Если вы используете vars () на объекте (как int ), который не имеет __dict__ атрибут, это поднимет Типеррор Отказ

print(vars(12))
Traceback (most recent call last):
  File "vars_example.py", line 12, in 
    print(vars(12))
TypeError: vars() argument must have __dict__ attribute

Заключение

В этой статье мы смотрели на функцию Python vars (), что полезно, если вы хотите быстро получить атрибуты и все представительные методы любого класса/модуля/объекта.

Рекомендации