Автор оригинала: 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, inprint(vars(12)) TypeError: vars() argument must have __dict__ attribute
Заключение
В этой статье мы смотрели на функцию Python vars (), что полезно, если вы хотите быстро получить атрибуты и все представительные методы любого класса/модуля/объекта.
Рекомендации
- Журналдав Статья на функции Python vars ()