Как найти в коде метод

Is there’s any functionality simillar to CTRL+R of sublime in VSCode?

Sublime search method functionality

asked Aug 1, 2017 at 14:10

Ricardo Silva's user avatar

Ricardo SilvaRicardo Silva

1,1441 gold badge10 silver badges19 bronze badges

3

Go to Symbol workbench.action.gotoSymbol Ctrl+Shift+O (Cmd+Shift+O on a Mac).

You can reassign it to Ctrl+R.

You can also group them by typing colon @:.

matharden's user avatar

answered Aug 1, 2017 at 14:25

Alex's user avatar

4

For search method name you can use CTRL + P and then start search with #

for example : #register

Or press CTRL + T and type method name

enter image description here

answered Mar 12, 2020 at 22:32

Hamed Naeemaei's user avatar

Hamed NaeemaeiHamed Naeemaei

7,6843 gold badges37 silver badges45 bronze badges

4

I found multiple options to search function/definition.

According to your convenience, you can choose one of the below options :

  1. Best shortcut: Ctrl+Shift+O and type your function name.

  2. Press Ctrl+P for «quick open», then you can use @ or @: The latter is handy to see all the symbols in the file grouped by classes, constants, fields, methods

  3. Press Ctrl+T to searches across files, not just the current file.

Thanks, @kevinvictor and @alex

answered Sep 12, 2020 at 6:29

Irshad Khan's user avatar

Irshad KhanIrshad Khan

5,6002 gold badges43 silver badges39 bronze badges

1

The answer is to use Ctrl + T and start typing a method name.

(It searches for the method name in multiple files. You can use Ctrl + F to do the search in the current file.)

More detailed answer —

There are several ways to do a search in VS Code. One global way to do a search is to use Ctrl + P.

When you first click on Ctrl + P (Go to File), it shows the recently opened files.

  1. Then when you start typing in the search box not beginning with a special character like # or @, it will search for files.

  2. But when you start typing in the search box beginning with a special character like # or @, it will search for other things.

    Ctrl + P + # — show all symbols including methods in all files
    (same as shortcut: Ctrl + T)

    Ctrl + P + @ — go to symbol (same as shortcut: Ctrl + Shift + O)

answered Jan 7, 2021 at 8:53

FullStackCoder's user avatar

Having same issue in Visual Studio editor. I simply install PHP IntelliSense extension.

You can find this extension in ctrl + shift + x search IntelliSense and install it. And then type ctrl + shift + o so you can see all method and function.

answered Mar 23, 2021 at 12:12

Vipul Jethva's user avatar

Vipul JethvaVipul Jethva

6371 gold badge7 silver badges27 bronze badges

If you want to check for multiple uses of a function in VSCode another quick way to do this is

By using CTRL+CLICK (Windows) or CMD+CLICK (Mac) on the function name and then you would see a column on the right which would tell you all the other places in the file system that function has been used.

What lookup looks like

answered Jul 18, 2020 at 9:31

omotola shogunle's user avatar

zhdoon

Есть ли плагин, который позволяет найти файл, в котором определена функция/метод/класс, используемый в коде?


  • Вопрос задан

    более трёх лет назад

  • 6759 просмотров

Выделите название функцииметода и нажмите ALT + F12 или же используйте контекстное меню.

spoiler

5c2ddcb52f6f1536950342.jpeg

spoiler

5d95d9a37cb65562810582.jpeg

Пригласить эксперта

Так а почему не использовать поиск? Открываете поиск по всем файлам, вводите function my_function_name и ищете.


  • Показать ещё
    Загружается…

28 мая 2023, в 02:05

7000 руб./за проект

27 мая 2023, в 23:03

10000 руб./за проект

27 мая 2023, в 22:55

1000 руб./за проект

Минуточку внимания

A quick recap of the 2 approaches with speed comparison being the important part.

http://geekswithblogs.net/BlackRabbitCoder/archive/2013/07/25/c.net-little-wonders-getting-caller-information.aspx

Determining the caller at compile-time

static void Log(object message, 
[CallerMemberName] string memberName = "",
[CallerFilePath] string fileName = "",
[CallerLineNumber] int lineNumber = 0)
{
    // we'll just use a simple Console write for now    
    Console.WriteLine("{0}({1}):{2} - {3}", fileName, lineNumber, memberName, message);
}

Determining the caller using the stack

static void Log(object message)
{
    // frame 1, true for source info
    StackFrame frame = new StackFrame(1, true);
    var method = frame.GetMethod();
    var fileName = frame.GetFileName();
    var lineNumber = frame.GetFileLineNumber();

    // we'll just use a simple Console write for now    
    Console.WriteLine("{0}({1}):{2} - {3}", fileName, lineNumber, method.Name, message);
}

Comparison of the 2 approaches

Time for 1,000,000 iterations with Attributes: 196 ms
Time for 1,000,000 iterations with StackTrace: 5096 ms

So you see, using the attributes is much, much faster! Nearly 25x
faster in fact.

В этом посте будет обсуждаться, как получить имя текущего метода, выполняемого в C#.

1. Использование StackTrace Учебный класс (System.Diagnostics)

Трассировка stack — это упорядоченная коллекция одного или нескольких кадров stack, в которых хранится отладочная и диагностическая информация.

В следующем примере создается простая трассировка stack с использованием StackTrace пример. Второй кадр трассировки stack содержит кадр stack текущего метода.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

using System;

using System.Diagnostics;

public class Example

{

    public static string GetCurrentMethodName()

    {

        StackTrace stackTrace = new StackTrace();

        StackFrame stackFrame = stackTrace.GetFrame(1);

        return stackFrame.GetMethod().Name;

    }

    public static void Main()

    {

        string currentMethod = GetCurrentMethodName();

        Console.WriteLine(currentMethod);

    }

}

/*

    результат: Main

*/

Скачать  Выполнить код

 
Если вы не хотите создавать вспомогательный метод, измените код на следующий. Здесь первый кадр представляет вершину stack, то есть последний вызов метода в последовательности.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

using System;

using System.Diagnostics;

public class Example

{

    public static void Main()

    {

        StackTrace stackTrace = new StackTrace();

        StackFrame stackFrame = stackTrace.GetFrame(0);

        string currentMethod = stackFrame.GetMethod().Name;

        Console.WriteLine(currentMethod);

    }

}

/*

    результат: Main

*/

Скачать  Выполнить код

Или же

using System;

using System.Diagnostics;

public class Example

{

    public static void Main()

    {

        StackFrame stackFrame = new StackFrame(0);

        string currentMethod = stackFrame.GetMethod().Name;

        Console.WriteLine(currentMethod);

    }

}

/*

    результат: Main

*/

Скачать  Выполнить код

2. Использование MethodBase.GetCurrentMethod() метод

Альтернативно, MethodBase.GetCurrentMethod() можно использовать метод, который возвращает MethodBase объект, представляющий текущий выполняемый метод.

using System;

using System.Diagnostics;

using System.Reflection;

public class Example

{

    public static void Main()

    {

        string currentMethod = MethodBase.GetCurrentMethod().Name;

        Console.WriteLine(currentMethod);

    }

}

/*

    результат: Main

*/

Скачать  Выполнить код

Вот и все, что касается получения имени текущего метода в C#.

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования :)

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

Всем привет! В сегодняшней статье мы посмотрим, как мы можем найти все методы данного класса.

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

Давайте начнем! Мы покажем вам некоторые способы сделать это, и вы можете использовать любой из методов ниже.

Определите наш класс шаблона

Давайте сначала определим манекет, из которого мы можем проверить наши выходы.

Рассмотрим класс ниже, который имеет некоторые методы:

class MyClass(object):
    def __init__(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = a


    def add(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state + a
        return self.state


    def subtract(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state - a
        return self.state


    def multiply(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state * a
        return self.state


    def divide(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state / a
        return self.state

Класс хранит плавучую точку Государство Атрибут, который мы можем манипулировать с помощью арифметических операций.

Давайте теперь посмотрим на некоторые способы перечислять методы для нашего пользовательского класса.

Способ 1 – Использование функции DIR () для перечисления методов в классе

Чтобы перечислить методы этого класса, один подход – использовать функцию DIR () в Python.

dir () Функция вернет все функции и свойства класса.

Посмотрим, что произойдет, если мы попробуем это для MyClass Отказ

Выход

['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'add',
 'divide',
 'multiply',
 'subtract']

Хорошо, мы видим, что у нас есть наш Добавить , Разделить , вычесть и Умножьте Методы перечислены! Однако как насчет всех других методов?

Ну, эти методы (те, которые начинаются с двойного поднятия), называются Методы гуляния Отказ

Они обычно называются функцией обертки. Например, Dict () Функция вызывает __dict __ () метод.

Фильтрация расположенных методов от выхода

Обычно нам не понадобится префиксные методы двойной подчеркивания, поэтому мы можем отфильтровать их с помощью приведенного ниже фрагмента:

method_list = [method for method in dir(MyClass) if method.startswith('__') is False]
print(method_list)

Выход

['add', 'divide', 'multiply', 'subtract']

Ух ты! Теперь мы только получаем арифметические методы, которые мы хотели!

Однако наше настоящее решение имеет проблему.

Помните, что dir () Вызывает как методы, так и свойства класса?

Обращение с свойствами класса

Если бы у нас была собственность внутри класса, он тоже будет перечислять. Рассмотрим ниже пример.

class MyClass(object):

    # MyClass property
    property1 = [1, 2, 3]

    def __init__(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = a


    def add(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state + a
        return self.state


    def subtract(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state - a
        return self.state


    def multiply(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state * a
        return self.state


    def divide(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state / a
        return self.state


    @staticmethod
    def global_method(a, b):
        return a + b


    @classmethod
    def myclass_method(cls):
        return cls


method_list = [method for method in dir(MyClass) if method.startswith('_') is False]
print(method_list)

Теперь, что вы думаете, что вывод будет?

Выход

['add', 'divide', 'global_method', 'multiply', 'myclass_method', 'property1', 'subtract']

Это дает нам Property1 Также, что не то, что мы хотим.

Нам нужно сделать еще один фильтр для дифференцировки между методом и свойством.

Но это действительно просто. Основное отличие состоит в том, что любой объект недвижимости Не Callable, в то время как методы можно назвать!

В Python мы можем использовать булевую функцию Callable (атрибут) Чтобы проверить, можно ли назвать атрибут.

Давайте теперь включаем это в наш старый код.

method_list = [attribute for attribute in dir(MyClass) if callable(getattr(MyClass, attribute)) and attribute.startswith('__') is False]
print(method_list)

Давайте сломаемся, написав его без понимания списка:

method_list = []

# attribute is a string representing the attribute name
for attribute in dir(MyClass):
    # Get the attribute value
    attribute_value = getattr(MyClass, attribute)
    # Check that it is callable
    if callable(attribute_value):
        # Filter all dunder (__ prefix) methods
        if attribute.startswith('__') == False:
            method_list.append(attribute)

print(method_list)

Мы также изменили Метод к атрибут Так что это удаляет вводящее в заблуждение намерения!

Давайте проверим это сейчас.

Выход

['add', 'divide', 'global_method', 'multiply', 'myclass_method', 'subtract']

Действительно, мы действительно получим свой список методов без свойств!

Метод 2 – Использование OptParse.optionparter

Теперь это еще один подход, который вы можете использовать, если вы не слишком удобны с помощью dir () Отказ

Мы можем использовать проверять Модуль, чтобы перечислить методы.

А именно, мы можем использовать Inspect.getMembers (экземпляр,. Сизлет) получить список методов.

Это автоматически выполнит работу для вас, и вам просто нужно иметь дело с выходом. Давайте посмотрим на пример.

import inspect

class MyClass(object):

    # MyClass property
    property1 = [1, 2, 3]

    def __init__(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = a

    def add(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state + a
        return self.state


    def subtract(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state - a
        return self.state


    def multiply(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state * a
        return self.state


    def divide(self, a):
        assert isinstance(a, float) or isinstance(a, int)
        self.state = self.state / a
        return self.state


    @staticmethod
    def global_method(a, b):
        return a + b


    @classmethod
    def myclass_method(cls):
        return cls


# Create our instance
instance = MyClass(100)

# Get the list of functions
method_list = inspect.getmembers(MyClass, predicate=inspect.ismethod)

print(method_list)

Выход

[('__init__',
  >),
 ('add',
  >),
 ('divide',
  >),
 ('multiply',
  >),
 ('myclass_method',
  >),
 ('subtract',
  >)]

Мы можем получить первый элемент каждого кортежа, чтобы получить имя метода.

Предостережения использования модуля проверки

Обратите внимание, что получаем список кортежей. Первый элемент кортежа – это имя функции, которую второй элемент представляет собой сам объект метода.

Хотя это может показаться хорошим решением, вы можете заметить некоторые вещи.

  • Для dir () Мы напрямую использовали саму название класса. Но здесь нам нужно пройти экземпляр.
  • StaticMethods также не отображаются в списке. В зависимости от вашего случая использования, вы можете/не понадобиться.

Из-за вышеупомянутых точек я бы предложил вам оставаться простой и использовать dir () Функция!

Заключение

В этой статье мы видели, как мы могли бы перечислить все методы данного класса в Python.

использованная литература

  • Stackoverflow вопрос Список всех методов класса

Понравилась статья? Поделить с друзьями:
  • Как составить план рабочего времени на неделю
  • Как найти выигрыш в силе для пресса
  • Как найти папку хост на виндовс 10
  • Как найти провода в бетоне
  • Как найти клиентов для маркетолога