import types class Person(object): __slots__ = ("name","age") #定义两个属性,如果使用__slots__定义了两个属性,只能使用这两个属性。保护创建的属性。 def eat(self): print("__%s正在吃"%self.name) def run(self): print("__%s正在跑" % self.name) p = Person() p.name = "王" p.age = "20" #P.score = 50 #不能添加其他的属性,一旦添加就会出现问题。 '''' #验证一下是否能够添加方法。 p.run =types.MethodType(run,p) p.run() # Traceback (most recent call last): # File "F:/python项目/09Day/02python核心编程/04py语言的动态特性/03 - 测试__slots__.py", line 17, in <module> # p.run =types.MethodType(run,p) # AttributeError: 'Person' object has no attribute 'run' #我们添加动态的方法也是不行的,使用了slots ''' #子类继承后可以添加属性和方法 class Test(Person): print("--------test-----------") t = Test() t.age = 18 t.name = "老李" t.score = 80 #使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的 print(t.score)
python中 __slots__测试结果
最新推荐文章于 2025-03-24 22:39:50 发布