📜  列出对象属性 python (1)

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

列出对象属性 Python

在 Python 中,对象可以是任何一种数据类型(例如列表、元组、字典等等)或类实例,可以使用 dir()vars() 函数或 __dict__ 属性来列出对象的属性。

dir()

dir() 函数返回对象的属性列表,包括内置属性和方法。例如:

lst = [1, 2, 3]
print(dir(lst))

输出:

['__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', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

其中,以下划线开头的属性和方法属于 Python 中的特殊属性或方法,往往被称为“双下划线”或“魔法方法”。

vars()

vars() 函数返回对象的 __dict__ 属性,该属性是一个字典,包含对象的所有属性和它们的值。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person('Tom', 20)
print(vars(p))

输出:

{'name': 'Tom', 'age': 20}
__dict__

__dict__ 属性是一个字典,包含类或实例的所有属性和它们的值。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

print(Person.__dict__)

输出:

{'__module__': '__main__', '__init__': <function Person.__init__ at 0x7f88e79ed048>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}

注意,上面的输出包含了 __weakref____module__ 属性,它们属于 Python 中的特殊属性。因此,我们往往会用 vars() 函数或 dir() 函数来查看对象的属性。