python进阶(叁) 内建函数getattr工厂形式

#coding=utf-8
from multiprocessing import Pool
import time
def ft(x):
  #多任务,系统自动化配进程执行
  for i in range(2):
    print i,'-----------',x
    time.sleep(1)



def main_process():
    pool = Pool(processes=4) #控制进程池的大小,为4个进程
    for i in range(10):
        #添加入进程池,apply带_async,单独apply为阻塞版本;函数名target,参数args
        result = pool.apply_async(ft,(i,))

    pool.close()
    pool.join()

    if result.successful():
        print('_____success_____')


if __name__=="__main__":
    main_process()

pyMethod类下定义了四个办法,getattr(pyMethod(),’out%s’%str)()  
传入的办法名不一样,调用不相同的点子。些处方法名称为字符串。

  • 干预创设类的历程
  • 修改类
  • 再次回到修改今后的类

前言

 

 getattr(pyMethod(),'out%s'%str)()  注意pyMethod()和最后的()   这里之所以这么写pyMethod()加括号是实例化类对象,最后的括号,因为getattr函数反射后,是一个方法对象。

 

你也许感兴趣的小说:

  • 增强你工效的shell命令计算大全
  • Linux下NC反弹shell命令(推荐)
  • shell脚本落成多彩进度条
  • shell怎样记录用户的IP与命令详解
  • shell脚本完毕多进度运营的不二等秘书籍言传身教
  • Shell脚本草述钩元典之Fork炸弹的分析与防备
  • 详解Linux Shell
    完结贰个拿走任意位数的任性密码的本子

 

#coding=utf-8

class pyMethod(object):
    def outstr(self):
        print('this is string')

    def outint(self):
        print('this is number')

    def outdate(self):
        print('this is date')


if __name__=="__main__":
    str = 'int'
    getattr(pyMethod(),'out%s'%str)()     
    str = 'str'
    getattr(pyMethod(),'out%s'%str)()
    str = 'date'
    getattr(pyMethod(),'out%s'%str)()

干什么选取元类?

 

何以要运用元类那种歪曲且简单失误的效益?
诚如情况下,大家并不会利用元类,9玖%的开发者并不会用到元类,所以壹般不要思索那几个题材。
元类主用用于创制API,二个出色的例子就是Django的O途达M。
它让我们得以如此定义二个类:

 

class Person(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()

 

运作下边的代码:

guy = Person(name='bob', age='35')
print(guy.age)

回到的结果是int项目而不是IntegerField指标。那是因为models.Model采用了元类,它会将Python中定义的字段转换来数据库中的字段。
透过利用元类,Django将复杂的接口转换到不难的接口。

 

原型:type(类名,基类元组(可以为空,用于继承), 包含属性或函数的字典)

 以下三种写法都得以:

type(‘Class’,(object,),dict(hello=fun()))

type(‘Class’,(object,),{“hello”:fun()})

一、class 自定义的类名称

2、(object,)是继承类,的元组,如若唯有二个就写那种时局(object,);五个(object,xxxx,)

三、dict(hello=fun()) 或 {“hello”:fun()}
第二个参数,是三个字典等号左是
自定义的方法名,右边是已写好的法子名,那么些要注意,有参数且从未暗中认可值的情况下,要加括号;

 

def fun():
    print('hello world!')


if __name__=="__main__":

    h = type('Hello',(object,),dict(hello=fun()))
    tc = h()
    tc.hello

 

引用:

365bet体育在线网投,h 也正是收到Hello类;tc
= h()实例化类;tc.hello方法,调用的骨子里是大家定义的fun方法。

    Hello = type('Hello',(object,),dict(hello=fun()))
    tc = Hello()
    tc.hello

 type()动态创造类后,还是能添加更加多的方法和性质:

def mysql():
    conn = pymysql.connect(host='127.0.0.1',port=3306 ,user='root' ,passwd='q123456' ,db='amsql' )
    cur = conn.cursor()
    sql = "SELECT * FROM amt_case_interface_table"
    ret = cur.execute(sql)
    print(cur.fetchmany(3))
    #conn.commit()

    cur.close()
    conn.close()

Hello.mysql = mysql()

调用:

tc.mysql

 

Linux and
python学习调换一,二群已满.

Linux and
python学习调换3群新开,欢迎出席,壹起学习.qq 3群:56322789四

不前进,不倒退,甘休的气象是绝非的.

一同前进,与君共勉,

 

总结

不前进,不倒退,甘休的境况是从未有过的.

举个栗子:

元类是python高阶语法.
合理的使用能够减掉大气重复性的代码.

#!/bin/sh
CERT_DIR_ZIP=/data/cert/keys  
zip_user(){
 zip -P $zip_psw /data/frontend/tmp/$zip_name.zip $client/*
}
if [ "x$1" = "xzip" ];then
 cd $CERT_DIR_ZIP
 client=$2
 zip_psw=$3
 zip_name=$4
 zip_user
 cd -
fi

python多进度并发机制:

 

 

上述正是那篇文章的全体内容,希望本文的内容对大家的学习可能工作能带来一定的扶助,如若有问号大家能够留言调换,谢谢大家对台本之家的援救。

发表评论

电子邮件地址不会被公开。 必填项已用*标注