繁体   English   中英

如何找出python模块拥有的方法,属性等

[英]How to find out what methods, properties, etc a python module possesses

让我们说我导入一个模块。 为了让我充分利用它,我想知道我可以使用哪些属性,方法等。 有没有办法找到它?

例如: 在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")

我如何使该功能也打印出所消耗的内存,可执行路径等?

至于Python模块,你可以这样做

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

并且你将得到一个支持的方法列表(更确切地说,你得到docstring,它可能不包含每一个方法)。 如果你想要,你可以使用

>>> dir(module)

虽然现在你只需要获得该模块中所有属性,方法,类等的长列表。

在你的第一个例子中,你正在调用外部程序。 当然Python不知道wmic.exe有哪些功能。 应该怎么做?

dir(module)返回dir(module)属性的名称

module.__dict__是键和属性对象本身之间的映射

module.__dict__.keys()dir(module)是具有相同元素的列表,尽管它们不相等,因为元素在它们中的顺序不同

似乎help(module)是你真正需要的

Python有一个名为dir()的内置函数。 我不确定这是否是你所指的,但启动一个交互式python控制台并输入:

import datetime
dir(datetime)

这应该为您提供方法,属性和子模块的列表

@ldmvcd

好的,对不起,我认为你是初学者,而且你没有看到我所指的基本概念。

对象是Python的数据抽象。 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后面的任何名称都使用了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

模块的命名空间在第一次导入模块时自动创建。 脚本的主要模块始终称为main 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM