元类实际上做了以下三方面的工作

怎么使用元类?

 

干什么要采取元类那种歪曲且便于失误的机能?
一般情形下,大家并不会利用元类,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 自定义的类名称

贰、(object,)是承继类,的元组,假设唯有三个就写那种形势(object,);四个(object,xxxx,)

三、dict(hello=fun()) 或 {“hello”:fun()}
第二个参数,是1个字典等号左是
自定义的章程名,左边是已写好的措施名,这一个要小心,有参数且从未私下认可值的图景下,要加括号;

 

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


if __name__=="__main__":

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

 

引用:

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学习调换三群新开,接待加入,一齐学习.qq 3群:5632278九4

不前进,不倒退,结束的状态是不曾的.

联合前进,与君共勉,

 

元类是python高阶语法.
合理的应用可以减去大气重复性的代码.

  • 干预创立类的进程
  • 修改类
  • 回去修改今后的类

 

元类实际上做了以下叁方面包车型地铁办事:

 

python元类:**type()   **

 

相关文章