zoukankan      html  css  js  c++  java
  • 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=4
    print lang1.rank

    运行结果:

    2.动态添加方法

    from types import MethodType
    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')
    def getrank(self):
        return 4
    lang1.getrank=MethodType(getrank,lang1,Lang) 
    print lang1.getrank()

    运行结果:

    这种方法只是给实例lang1,动态添加了方法

    from types import MethodType
    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')
    lang2=Lang('C','9')
    def getrank(self):
        return 4
    lang1.getrank=MethodType(getrank,lang1,Lang) 
    print lang2.getrank()

    运行结果:

    给类添加方法:

    from types import MethodType
    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')
    lang2=Lang('C','9')
    def getrank(self):
        return 4
    Lang.getrank=MethodType(getrank,None,Lang) 
    print lang2.getrank()

    运行结果:

    3.限制Class属性 __slots__

    #__slots__使用
    from types import MethodType
    class 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=4
    lang1.desc='Simple'
    print lang1.rank

    运行结果:

  • 相关阅读:
    CentOS7安装minio
    xshell连接虚拟机Connection failed
    Mysql时间加减函数
    mysql存储过程模板
    Activiti实现会签功能
    2018考研复试流程
    C编程经验总结5(剧终)
    《数据结构总结》
    《关于安卓和IOS开发》
    番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/7231139.html
Copyright © 2011-2022 走看看