Подтвердить что ты не робот

Как узнать, какие методы, свойства и т.д. Имеет модуль python

Извините, если мой вопрос непонятен, я новичок в python и все еще понимаю его терминологию.

Мой вопрос может быть немного общий. Допустим, я импортировал модуль, чтобы я мог его наилучшим образом использовать, я хотел бы знать, какие свойства, методы и т.д. Я могу использовать. Есть ли способ узнать это?

В качестве примера: Определение запущенных программ в Python

В этой строке:

os.system('WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid')

Скажем, я хотел также распечатать память, потребляемую процессами, как мне узнать, возможно ли это? И каков был бы правильный "ярлык" для этого? (так же, как автор использует "Commandline", "ProcessId" )

Аналогично, в этом:

import win32com.client
def find_process(name):
    objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
    objSWbemServices = objWMIService.ConnectServer(".", "root\cimv2")
    colItems = objSWbemServices.ExecQuery(
         "Select * from Win32_Process where Caption = '{0}'".format(name))
    return len(colItems)

print find_process("SciTE.exe")

Как я могу заставить функцию также распечатать потребляемую память, исполняемый путь и т.д.?

4b9b3361

Ответ 1

Что касается модулей Python, вы можете сделать

>>> import module
>>> help(module)

и вы получите список поддерживаемых методов (точнее, вы получите docstring, который может не содержать каждый метод). Если вы этого хотите, вы можете использовать

>>> dir(module)

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

В вашем первом примере вы вызываете внешнюю программу. Конечно, Python понятия не имеет, какие функции имеют wmic.exe. Как это сделать?

Ответ 2

dir(module) возвращает имена атрибутов модуля

module.__dict__ - это сопоставление между ключами и самими объектами атрибутов

module.__dict__.keys() и dir(module) - это списки, имеющие одинаковые элементы, хотя они не равны, потому что в них нет элементов в том же порядке

кажется, что help(module) это то, что вам действительно нужно

Ответ 3

Python имеет встроенную функцию dir(). Я не уверен, что это то, о чем вы говорите, но запустите интерактивную консоль python и введите:

import datetime
dir(datetime)

Это должно дать вам список методов, свойств и подмодулей

Ответ 4

@ldmvcd

Хорошо, извините, я думаю, что вы новичок, и вы не видите, какие основные понятия я имею в виду.

Объекты - это абстракция Pythons для данные. Все данные в программе Python представленные объектами или отношениями между объектами. http://docs.python.org/reference/datamodel.html#the-standard-type-hierarchy

Я не понимаю, почему это называется абстракцией: для меня объект является чем-то реальным в машине, серия бит, организованная по определенным правилам для представления концептуальных данных или функций.

Имена относятся к объектам. Имена введенные с помощью операций привязки имен. Каждое вхождение имени в текст программы означает привязку это имя, установленное в самом внутреннем функциональный блок, содержащий использование. http://docs.python.org/reference/executionmodel.html#naming-and-binding

.

Пространство имен - это отображение от имен к объекты. Большинство пространств имен в настоящее время реализованы как словари Python, но это обычно не заметно в любым способом (за исключением исполнения) и он может измениться в будущем. Примеры пространств имен: набор встроенных имена (содержащие функции, такие как abs() и встроенные имена исключений); глобальные имена в модуле; и локальные имена в вызове функции. В некотором смысле набор атрибутов объект также формирует пространство имен. http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects

.

Кстати, я использую атрибут word для любого имени, следующего за точкой - для Например, в выражении z.real, real - это атрибут объекта z. Строго говоря, ссылки на имена в модулях ссылки на атрибуты: в выражении modname.funcname, modname - это объект модуля и funcname является его атрибутом. В этот случай случается прямое отображение между модулей и глобальные имена, определенные в модуле: они используйте одно и то же пространство имен! http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects

.

Пространства имен создаются на разных моментов и имеют разные времена жизни. http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects

.

Пространство имен для модуля автоматически создается в первый раз модуль импортируется. Основной модуль для script всегда называется Основной. http://docs.python.org/reference/executionmodel.html#naming-and-binding

.

Ну, программа Python - это большая машина, которая играет с объектами, ссылается на эти объекты, имена этих объектов и пространства имен, в которых привязаны имена и объекты, пространства имен, реализуемые как словари.

Итак, вы правы: когда я обращаюсь к клавишам, я называю имена ключами в разных пространствах имен. Имена произвольны или нет, если объекты, которые они были созданы для имени, являются объектами пользователя или встроенными объектами.

Я советую вам внимательно прочитать детали

3.1. Объекты, значения и типы http://docs.python.org/reference/datamodel.html#the-standard-type-hierarchy

и

4.1. Именование и привязка http://docs.python.org/reference/executionmodel.html#naming-and-binding