当前位置:  开发笔记 > 编程语言 > 正文

Python中是否有一个函数列出特定对象的属性和方法?

如何解决《Python中是否有一个函数列出特定对象的属性和方法?》经验,为你挑选了3个好方法。

Python中是否有一个函数列出特定对象的属性和方法?

就像是:

ShowAttributes ( myObject )

   -> .count
   -> .size

ShowMethods ( myObject )

   -> len
   -> parse

Andrew Hare.. 55

你想看看这个dir()功能:

>>> li = []
>>> dir(li)      
['append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']

li是一个列表,因此dir(li)返回列表中所有方法的列表.请注意,返回的列表包含方法的名称作为字符串,而不是方法本身.


编辑以回应评论:

不,这也将显示所有继承的方法.考虑这个例子:

test.py:

class Foo:
    def foo(): pass

class Bar(Foo):
    def bar(): pass

Python解释器:

>>> from test import Foo, Bar
>>> dir(Foo)
['__doc__', '__module__', 'foo']
>>> dir(Bar)
['__doc__', '__module__', 'bar', 'foo']

您应该注意 Python的文档说明:

注:由于dir() 供应 主要是在一个交互式提示使用便利性,它会尝试提供一个有趣的名称集更多比它试图提供一个严格或一致定义集名称,其行为细节可以跨版本改变.例如,当参数是类时,元类属性不在结果列表中.

因此,在代码中使用它是不安全的.请vars()改用.Vars()不包括有关超类的信息,您必须自己收集它们.


如果您正在使用dir()交互式解释器中查找信息,请考虑使用help().



1> Andrew Hare..:

你想看看这个dir()功能:

>>> li = []
>>> dir(li)      
['append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']

li是一个列表,因此dir(li)返回列表中所有方法的列表.请注意,返回的列表包含方法的名称作为字符串,而不是方法本身.


编辑以回应评论:

不,这也将显示所有继承的方法.考虑这个例子:

test.py:

class Foo:
    def foo(): pass

class Bar(Foo):
    def bar(): pass

Python解释器:

>>> from test import Foo, Bar
>>> dir(Foo)
['__doc__', '__module__', 'foo']
>>> dir(Bar)
['__doc__', '__module__', 'bar', 'foo']

您应该注意 Python的文档说明:

注:由于dir() 供应 主要是在一个交互式提示使用便利性,它会尝试提供一个有趣的名称集更多比它试图提供一个严格或一致定义集名称,其行为细节可以跨版本改变.例如,当参数是类时,元类属性不在结果列表中.

因此,在代码中使用它是不安全的.请vars()改用.Vars()不包括有关超类的信息,您必须自己收集它们.


如果您正在使用dir()交互式解释器中查找信息,请考虑使用help().



2> Anonymous..:

dir()和vars()不适合你吗?



3> Autoplectic..:

并且为了更人性化的方式,您可以使用see:

In [1]: from see import see
In [2]: x = "hello world!"
In [3]: see(x)
Out[3]: 
  []   in   +   *   %   <   <=   ==   !=   >   >=   hash()   help()   len()
  repr()   str()   .capitalize()   .center()   .count()   .decode()
  .encode()   .endswith()   .expandtabs()   .find()   .format()   .index()
  .isalnum()   .isalpha()   .isdigit()   .islower()   .isspace()   .istitle()
  .isupper()   .join()   .ljust()   .lower()   .lstrip()   .partition()
  .replace()   .rfind()   .rindex()   .rjust()   .rpartition()   .rsplit()
  .rstrip()   .split()   .splitlines()   .startswith()   .strip()
  .swapcase()   .title()   .translate()   .upper()   .zfill()

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有