您的位置:

Python中dir函数的用法及示例

Python中dir()函数是一个非常常用的函数,它的主要作用是返回一个列表,其中包含了一个模块、类或实例所包含的所有属性和方法。在Python中,属性和方法都被视为对象的变量和函数,可以被直接调用或设置。

一、基本用法

dir()函数可以无参数调用,此时它会返回当前作用域内的所有变量、函数、类等信息,并且根据字母顺序进行排序:

    
        # 基本用法示例
        def test_func():
            pass

        test_var = 1

        print(dir())
    

输出结果如下所示,其中__builtins__代表Python的内建模块,而其他的变量、函数则是当前作用域内的:

    
    ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'test_func', 'test_var']
    

除了无参数调用外,dir()函数还可以接受一个参数,此时它会返回该参数所代表的对象的所有属性和方法:

    
        # 带参用法示例
        import math

        print(dir(math))
    

输出结果如下所示,其中包含了math模块的所有属性和方法:

    
    ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
    

二、特殊方法和属性

在Python中,一些特殊的方法和属性以特殊字符(如下划线)开头和结尾,例如__init__方法、__str__方法等。这些方法和属性是Python提供的对类和对象进行特殊处理的机制,因此在使用dir()函数时,如果希望查看某个对象的特殊方法和属性,需要使用特殊方法__dir__():

    
        # 特殊方法和属性示例
        class MyClass:
            def __init__(self):
                self.x = 1

            def __str__(self):
                return str(self.x)

        obj = MyClass()

        print(dir(obj))  # 查看对象的所有方法和属性
        print(obj.__dir__())  # 查看对象的特殊方法和属性
    

输出结果如下所示,其中包含了特殊方法和属性:

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

三、自定义列表属性和方法

除了可以直接使用Python提供的方法和属性外,在程序中也可以自定义类的属性和方法。对于自定义属性和方法,同样可以使用dir函数查看:

    
        # 自定义列表属性和方法示例
        class MyList(list):
            def get_first(self):
                return self[0]

        my_list = MyList([1, 2, 3])

        print(dir(my_list))
    

输出结果如下所示,其中包含了自定义的属性和方法:

    
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'get_first', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    

四、总结

在Python中,dir()函数是一个非常常用的函数,它可以帮助我们了解一个模块、类或实例所具有的所有属性和方法,方便代码编写和调试。我们可以通过无参数调用或接受一个参数的方式来使用dir()函数,还可以使用特殊方法__dir__()来查看对象的特殊方法和属性。此外,我们也可以在自定义类中添加属性和方法,同样可以使用dir()函数来查看自定义类的属性和方法。