📅  最后修改于: 2023-12-03 15:36:51.327000             🧑  作者: Mango
在 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()
函数来查看对象的属性。