Python获取对象属性的三大方法(__dict__、vars()、__slots__)的区别
__dict__
:对象的属性以字典的形式存储在__dict__
属性中。
class MyClass:
def __init__(self):
self.attribute = 'value'
obj = MyClass()
print(obj.__dict__) # 输出: {'attribute': 'value'}
vars()
:函数接收一个对象作为参数,并返回它的\_\_dict\_\_属性。
class MyClass:
def __init__(self):
self.attribute = 'value'
obj = MyClass()
print(vars(obj)) # 输出: {'attribute': 'value'}
__slots__
:是一个类变量,它是一个字符串序列,用于限制该类实例能够拥有的属性。使用__slots__
可以提高内存利用率,因为它避免使用字典来存储属性。
class MyClass:
__slots__ = ['attribute']
def __init__(self):
self.attribute = 'value'
obj = MyClass()
# print(obj.__dict__) # 会抛出AttributeError,因为__slots__禁止了__dict__的使用
注意:__slots__
是类级别的变化,应用后,该类的所有实例只能拥有在__slots__
中定义的属性。
评论已关闭