给定一个任何类型的Python对象,是否有一种简单的方法来获得该对象拥有的所有方法的列表?
或者如果这是不可能的,是否至少有一种简单的方法来检查它是否具有特定的方法,而不是在调用方法时检查是否发生错误?
给定一个任何类型的Python对象,是否有一种简单的方法来获得该对象拥有的所有方法的列表?
或者如果这是不可能的,是否至少有一种简单的方法来检查它是否具有特定的方法,而不是在调用方法时检查是否发生错误?
当前回答
你可以使用Python中预定义的dir()。
import module_name
dir(module_name)
你也可以把一个对象传递给dir() as
dir(object_name)
如果对象是预定义类(如int、str等)的对象,则会显示其中的方法(您可能知道这些方法是内建函数)。如果该对象是为用户定义的类创建的,它将显示该类中给出的所有方法。
其他回答
获取任何对象的方法列表的最简单方法是使用help()命令。
help(object)
它将列出与该对象相关的所有可用/重要方法。
例如:
help(str)
以便在整个模块中搜索特定的方法
for method in dir(module) :
if "keyword_of_methode" in method :
print(method, end="\n")
假设我们有一个Python obj。然后查看它拥有的所有方法,包括那些被__包围的方法(魔术方法):
print(dir(obj))
要排除魔法内置,可以这样做:
[m for m in dir(obj) if not m.startswith('__')]
最简单的方法是使用dir(objectname)。它将显示该对象的所有可用方法。
我已经完成了下面的函数(get_object_functions),它接收一个对象(object_)作为它的参数,并返回一个包含对象类中定义的所有方法(包括静态方法和类方法)的列表(函数):
def get_object_functions(object_):
functions = [attr_name
for attr_name in dir(object_)
if str(type(getattr(object_,
attr_name))) in ("<class 'function'>",
"<class 'method'>")]
return functions
好吧,它只是检查类的属性类型的字符串表示是否等于“<class 'function'>”或“<class 'method'>”,然后将该属性包含在函数列表中,如果那是True。
Demo
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f'My name is {self.name}')
@staticmethod
def say_hi():
print('hi')
@classmethod
def reproduce(cls, name):
return cls(name, 0)
person = Person('Rafael', 27)
print(get_object_functions(person))
输出
['__init__', 'introduce', 'reproduce', 'say_hi']
要获得更简洁的代码版本,请访问https://github.com/revliscano/utilities/blob/master/get_object_functions/object_functions_getter.py