首页 > 代码库 > python __slots__使用详解
python __slots__使用详解
1.动态添加属性
class Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)lang1=Lang(‘Python‘,‘8.5‘)lang1.rank=4print lang1.rank
运行结果:
2.动态添加方法
from types import MethodTypeclass Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)lang1=Lang(‘Python‘,‘8.5‘)def getrank(self): return 4lang1.getrank=MethodType(getrank,lang1,Lang) print lang1.getrank()
运行结果:
这种方法只是给实例lang1,动态添加了方法
from types import MethodTypeclass Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)lang1=Lang(‘Python‘,‘8.5‘)lang2=Lang(‘C‘,‘9‘)def getrank(self): return 4lang1.getrank=MethodType(getrank,lang1,Lang) print lang2.getrank()
运行结果:
给类添加方法:
from types import MethodTypeclass Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)lang1=Lang(‘Python‘,‘8.5‘)lang2=Lang(‘C‘,‘9‘)def getrank(self): return 4Lang.getrank=MethodType(getrank,None,Lang) print lang2.getrank()
运行结果:
3.限制Class属性 __slots__
#__slots__使用from types import MethodTypeclass Lang(object): __slots__=(‘name‘,‘score‘,‘rank‘) def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)lang1=Lang(‘Python‘,‘8.5‘)lang1.rank=4lang1.desc=‘Simple‘print lang1.rank
运行结果:
python __slots__使用详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。