Как узнать, какие методы, свойства и т.д. Имеет модуль 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")
Как я могу заставить функцию также распечатать потребляемую память, исполняемый путь и т.д.?
Ответы
Ответ 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