给定一个任何类型的Python对象,是否有一种简单的方法来获得该对象拥有的所有方法的列表?
或者如果这是不可能的,是否至少有一种简单的方法来检查它是否具有特定的方法,而不是在调用方法时检查是否发生错误?
给定一个任何类型的Python对象,是否有一种简单的方法来获得该对象拥有的所有方法的列表?
或者如果这是不可能的,是否至少有一种简单的方法来检查它是否具有特定的方法,而不是在调用方法时检查是否发生错误?
当前回答
import moduleName
for x in dir(moduleName):
print(x)
这应该工作:)
其他回答
您可以使用内置的dir()函数来获得模块的所有属性的列表。在命令行上尝试一下,看看它是如何工作的。
>>> import moduleName
>>> dir(moduleName)
另外,您可以使用hasattr(module_name, "attr_name")函数来确定模块是否具有特定的属性。
有关更多信息,请参阅Python自省。
以便在整个模块中搜索特定的方法
for method in dir(module) :
if "keyword_of_methode" in method :
print(method, end="\n")
获取任何对象的方法列表的最简单方法是使用help()命令。
help(object)
它将列出与该对象相关的所有可用/重要方法。
例如:
help(str)
这里指出的所有方法的问题是,您不能确定某个方法不存在。
在Python中,您可以通过__getattr__和__getattribute__拦截点调用,从而可以在“运行时”创建方法。
例子:
class MoreMethod(object):
def some_method(self, x):
return x
def __getattr__(self, *args):
return lambda x: x*2
如果你执行它,你可以调用对象字典中不存在的方法…
>>> o = MoreMethod()
>>> o.some_method(5)
5
>>> dir(o)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'some_method']
>>> o.i_dont_care_of_the_name(5)
10
这就是为什么在Python中使用“请求原谅比请求许可更容易”的范例。
例如,如果你正在使用shell plus,你可以用这个代替:
>> MyObject??
这样,带'??’就在你的对象后面,它会显示类的所有属性/方法。