zoukankan      html  css  js  c++  java
  • 使用locals()获得类,进行分发 分类: python 小练习 divide into python python基础学习 2014-02-21 14:51 217人阅读 评论(0) 收藏

    参考dive into python P142

    #coding:utf-8

    '''
    locals()字典接收全局的类名称,从而获得类,然后实例化该类,调用实例的方法
    '''
    #定义类 myclass
    class myclass:
        def __init__(self):
            self.name = "sam"
        def report(self):
            print self.name

    #定义类 myroom
    class myroom:
        def __init__(self):
            self.room="Home"
        def report(self):
            print self.room

    #对类进行分发
    def getclass(classname):
        print "Locals:",globals()
        #获取类名,保存在myclass变量中
        myclass= globals()[classname]
        #得到类的实例
        myinstance = myclass()
        #调用实例的report方法
        myinstance.report()


    if __name__ == '__main__':
        for i in ["class","room"]:
            classname ="my"+i
            getclass(classname)


    或:

    #对类进行分发
    def getclass():

        #获得类
        classes = [classmodel for classkey,classmodel in globals().items() if classkey.startswith("my")]
        print classes
        for myclass in classes:

           # 对类进行实例化

            cc=myclass()
            cc.report()

    if __name__ == '__main__':
        getclass()

    #结果:

    [<class __main__.myclass at 0x044E84C8>, <class __main__.myroom at 0x0452A260>]
    sam
    Home

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    16.Linux yum扩展
    15.Linux软件管理
    11.Linux用户特殊权限
    10.Linux用户权限
    9.Linux用户管理(下)
    8.Linux用户管理(上)
    6.Linux文件属性及软硬链接
    5.Linux文件管理相关命令(下)
    如何解决微服务分布式事务问题
    Redis缓存和MySQL数据一致性方案(转)
  • 原文地址:https://www.cnblogs.com/think1988/p/4627935.html
Copyright © 2011-2022 走看看