Python中限制动态定义实例属性的白名单:slots
在Python中,每个对象都可以动态地添加新的属性和方法。这种动态性是Python语言的一大特点,但有时候我们希望限制对象的属性,只允许定义在一个预定义的白名单中。为了实现这个目的,Python提供了一个特殊的类属性,称为__slots__
。
__slots__
属性是一个类属性,它定义了一个属性名称的列表。当一个类定义了__slots__
属性时,实例对象只能拥有__slots__
列表中的属性,而不能动态地定义其他属性。
让我们通过一个示例来说明__slots__
的使用方法:
class Person:
__slots__ = ['name', 'age']
def __init__