python中类内的代码行?

python中类内的代码行?,python,lines-of-code,Python,Lines Of Code,我试图找出类或函数中存储在python文件中的代码行数 我的代码是这样的。。。我想要的是找到a类中的代码行数,而不是所有的文件。。。有什么好办法吗 import inspect import foo for a,b in inspect.getmembers(foo): if inspect.isclass(b): print a # find a class within the file 从inspect.getsourcelines文档: 返回对象的源行

我试图找出类或函数中存储在python文件中的代码行数 我的代码是这样的。。。我想要的是找到a类中的代码行数,而不是所有的文件。。。有什么好办法吗

import inspect
import foo    
for a,b in inspect.getmembers(foo):
    if inspect.isclass(b):
        print a  # find a class within the file
从inspect.getsourcelines文档:

返回对象的源行和起始行号的列表

这就是为什么需要0索引

从inspect.getsourcelines文档:

返回对象的源行和起始行号的列表


这就是为什么您需要0索引的原因,您仍然可以使用
inspect

In [6]: from test import A

In [7]: import inspect

In [8]: inspect.getsourcelines(A)
Out[8]: 
(['class A(object):\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n'],
 1)

len(inspect.getsourcelines(A)[0])
将返回您想要的结果。

您仍然可以使用
inspect

In [6]: from test import A

In [7]: import inspect

In [8]: inspect.getsourcelines(A)
Out[8]: 
(['class A(object):\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n',
  '    pass\n'],
 1)

len(inspect.getsourcelines(A)[0])
将返回您想要的结果。

我假设您不能打开文件并查看内部?我假设您不能打开文件并查看内部?谢谢您的回复。。。但我试着运行你的代码,它给了我错误。。。TypeError:“Foo”不是模块、类、方法、函数、回溯、帧或代码对象。。。“Foo”是Foo.pyit中类的名称,它现在正在工作。。我有一些语法错误。。非常感谢您的帮助这种方法的问题在于它计算代码行和注释行。。有没有办法只计算没有注释和文档字符串的代码行?我想到的第一件事是迭代这些代码行,只计算那些不以#开头的代码行。len([inspect.getsourcelines(a)[0]如果不是line.lstrip().startswith('#')]))感谢您的回复。。。但我试着运行你的代码,它给了我错误。。。TypeError:“Foo”不是模块、类、方法、函数、回溯、帧或代码对象。。。“Foo”是Foo.pyit中类的名称,它现在正在工作。。我有一些语法错误。。非常感谢您的帮助这种方法的问题在于它计算代码行和注释行。。有没有办法只计算没有注释和文档字符串的代码行?我想到的第一件事是迭代这些代码行,只计算那些不以#开头的代码行。len([line for line in inspect.getsourcelines(a)[0]如果不是line.lstrip().startswith('#')])@user1762447我建议您先阅读
inspect
文档,然后您将更高效地完成代码。相信我,我曾多次尝试阅读inspect文档,但很多事情对我来说仍然不清楚。。我是Python新手,这就是为什么我认为我仍然不熟悉Python文档的原因。我还有一个问题,我试图修改你提交的代码,让它只计算代码的长度,没有注释,但它不起作用。。有没有办法做到这一点??可以使用inspect.getdocs和inspect.getcomment并减去它们?@user1762447注释和文档,还是仅注释?当您获得代码行列表时,请删除空格的两端,过滤每一行不以“#”开头的内容。@user1762447我建议您先阅读
inspect
文档,然后才能更高效地完成代码。相信我,我曾多次尝试阅读inspect文档,但许多事情对我来说仍然不清楚。。我是Python新手,这就是为什么我认为我仍然不熟悉Python文档的原因。我还有一个问题,我试图修改你提交的代码,让它只计算代码的长度,没有注释,但它不起作用。。有没有办法做到这一点??可以使用inspect.getdocs和inspect.getcomment并减去它们?@user1762447注释和文档,还是仅注释?当您得到代码行列表时,删除空格的两端,过滤每一行不以“#”开头的内容。