使用locals()获得类,进行分发

参考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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值