Автор оригинала: Pankaj Kumar.
Функция Python vars () Возвращает атрибут __dict__ для модуля, класса, экземпляра или любого другого объекта с атрибутом __dict__. Таким образом, вывод функции vars () – это словарь.
Python vars ()
Синтаксис функции Python Vars ():
vars([object])
- Если аргумент не предоставлен, vars () действует как Местные жители () функция.
- Аргументы могут быть модулем, классом или экземпляром класса.
- Если указанный аргумент не имеет атрибута __dict__,
Типеррор
Исключение брошено с сообщениемImportError: vars () Аргумент должен иметь __dict__ атрибут
Отказ - Если мы обновляем значения словаря Object __dict__, то обновленное значение будет возвращено функцией vars ().
vars () класса и объекта
Допустим, у нас есть класс, определенный с некоторыми переменными классами и переменными экземпляра.
class Data: # class variables id = 0 name = '' def __init__(self, i, n): self.id = i self.name = n # instance variable self.repr = 'Data[%s,%s]' % (i,n)
Давайте посмотрим функцию VARS (), когда предусмотрен экземпляр класса.
d = Data(1, 'Pankaj') # vars of object print(vars(d)) # update __dict__ and then call vars() d.__dict__['id'] = 100 print(vars(d))
Выход:
{'id': 1, 'name': 'Pankaj', 'repr': 'Data[1,Pankaj]'} {'id': 100, 'name': 'Pankaj', 'repr': 'Data[1,Pankaj]'}
Давайте посмотрим функцию VARS () функции с классом в качестве аргумента.
print(vars(Data))
Выход:
{'__module__': '__main__', 'id': 0, 'name': '', '__init__':, '__dict__': , '__weakref__': , '__doc__': None}
vars () с модулем
import math print(vars(math))
Выход:
{'__name__': 'math', '__doc__': 'This module is always available. It provides access to the\nmathematical functions defined by the C standard.', '__package__': '', '__loader__': <_frozen_importlib_external.ExtensionFileLoader object at 0x1085654a8>, '__spec__': ModuleSpec(name='math', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x1085654a8>, origin='/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/math.cpython-37m-darwin.so'), 'acos':, 'acosh': , 'asin': , 'asinh': , 'atan': , 'atan2': , 'atanh': , 'ceil': , 'copysign': , 'cos': , 'cosh': , 'degrees': , 'erf': , 'erfc': , 'exp': , 'expm1': , 'fabs': , 'factorial': , 'floor': , 'fmod': , 'frexp': , 'fsum': , 'gamma': , 'gcd': , 'hypot': , 'isclose': , 'isfinite': , 'isinf': , 'isnan': , 'ldexp': , 'lgamma': , 'log': , 'log1p': , 'log10': , 'log2': , 'modf': , 'pow': , 'radians': , 'remainder': , 'sin': , 'sinh': , 'sqrt': , 'tan': , 'tanh': , 'trunc': , 'pi': 3.141592653589793, 'e': 2.718281828459045, 'tau': 6.283185307179586, 'inf': inf, 'nan': nan, '__file__': '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/math.cpython-37m-darwin.so'}
vars () без аргументации
print(vars())
Выход:
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x108508390>, '__spec__': None, '__annotations__': {}, '__builtins__':, '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_vars_function.py', '__cached__': None, 'Data': , 'd': <__main__.Data object at 0x108565048>, 'math': }
Ссылка: Официальная документация