Python获取对象属性的三大方法(__dict__、vars()、__slots__)的区别
warning:
这篇文章距离上次修改已过444天,其中的内容可能已经有所变动。
__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__中定义的属性。
评论已关闭