Я хочу извлечь все имена переменных с помощью скрипта Python, из файла Python, без редактирования файла Python - PullRequest
0 голосов
/ 02 апреля 2019

Я делаю текстовый редактор, в котором я могу сделать обозреватель переменных. Так что я хочу использовать мой скрипт на python, который является текстовым редактором. Я хочу получить все имена переменных из кода, который редактирует мой текстовый редактор.

если снова не ясно,> я создал текстовый редактор, и если пользователь редактирует любой файл python с помощью моего редактора, есть функция, которая извлекает все переменные из файла, который редактирует пользователь.

Если возможно, получить все значения переменных

Заранее спасибо.

Я пытался использовать vars (), но это не относится к строкам, потому что я могу получить текст только в формате строки, используя txt.get ( '1.0', 'конец') но я не пишу. Я также попытался встроить vars () в файл редактирования (файл, отредактированный пользователем) но я не получаю хорошего результата, или вы можете сказать, что нет результата.

и я не знаю, как использовать " dir " или как использовать его в этом сценарии для получения имен переменных.

Итак, мой ожидаемый результат - когда пользователь нажимает кнопку запуска функции и получает все переменные и их значения из файла python, который пользователь редактирует в настоящее время. как пример сценария

class example():
    def example_define():
        a=1
        b=2
        c=3

и функция возвращает как

{'a':1, 'b':2, 'c':3}

1 Ответ

1 голос
/ 02 апреля 2019

dir and __dict__ может быть полезно знать все атрибуты внутри объекта в зависимости от типа. Например, Давайте рассмотрим этот код code.py.

class example():
    def example_define(self):
        a=1
        b=2
        c=3
d = 1

def hello():
    print("world")

В другом файле debug.py вы можете попробовать это.

import code
print(code.__dict__) # prints a dictionary of all the attributes and their values.
print(dir(code)) # prints a list of all the attributes.

Также, если у вас есть объект o, вы можете вызвать dir(o), чтобы узнать атрибуты объекта. Если он поддерживает, вы можете попробовать o.__dict__.


Доступность области действия

class Example():
    def example_define(self):
        self.a = 1
        self.b = 2
        self.c = 3

o = Example()
print(dir(o)) # Doesn't give a, b, c
o.example_define()
print(dir(o)) # Gives a, b, c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...