📜  获取实例的所有方法 - Python (1)

📅  最后修改于: 2023-12-03 15:27:49.588000             🧑  作者: Mango

获取实例的所有方法 - Python

在 Python 中,我们可以通过一些内置函数来获取一个实例的所有方法。这些函数包括:

  • dir():返回对象的所有属性和方法的列表。
  • vars():返回对象的 __dict__ 属性(即对象的命名空间)。
dir() 函数

dir() 函数返回对象的所有属性和方法的列表。对于模块、类、实例以及其他任何对象,都可以使用该函数来获取其属性和方法。

class MyClass:
    def __init__(self):
        self.name = "John"
        self.age = 30
        
    def say_hello(self):
        print("Hello, I'm", self.name)
        
obj = MyClass()

print(dir(obj))

输出:

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name', 'say_hello']

可以看到,dir() 返回了对象 obj 的所有属性和方法的列表。

vars() 函数

vars() 函数返回对象的 __dict__ 属性(即对象的命名空间)。该函数只能用于实例对象。对于其他类型的对象(如模块或类),使用该函数会抛出一个 TypeError 异常。

class MyClass:
    def __init__(self):
        self.name = "John"
        self.age = 30
        
    def say_hello(self):
        print("Hello, I'm", self.name)
        
obj = MyClass()

print(vars(obj))

输出:

{'name': 'John', 'age': 30}

可以看到,vars() 返回了对象 obj__dict__ 属性,即对象的命名空间,其中包含了对象的所有属性。注意,方法不在此列。

总结

通过 dir()vars() 函数,我们可以获取一个实例的所有方法和属性。需要注意的是,dir() 函数返回的是包含所有属性和方法的列表,而 vars() 函数只返回实例的属性(不包括方法)。