为了达到限制的⽬的,Python允许在定义class的时候,定义一个特殊的 __slots__变量,来限制该class实例能添加的属性:
class Foo(object):
__slots__ = ("a", "b")
# 限制动态使用对象名添加东西(属性、方法)的名字
obj = Foo()
obj.a = 100
# print(obj.a)
def say_a(self):
print(self.a)
# Foo.c =say_a
import types
fun =types.MethodType(say_a, obj)
obj.c =fun
obj.c =200
print(obj.c)
注意:使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对于继承的自类是不起作用的