全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1301 5
2019-10-10

AIU人工智能学院:数据科学、人工智能从业者的在线大学。
数据科学(Python/R/Julia)数据分析、机器学习、深度学习

Python中的type函数是常用于查看变量类型,在调试python代码和bug修复过程中都是非常有效的工具。

然而,type函数的强大功能并非只能用于查看变量类型,在Python中完全允许使用 type函数来动态创建类,或者说定义类,这也是python类编程中的进阶用法!

python类定义进阶

下面我们将详细介绍使用type函数动态创建类的过程!

type函数新解—能理解最好,不理解直接看下一节

先来看一段代码,并仔细观察type函数的输出类型:

type函数新解

分析:

从上述代码的输出可见testClass类的类型竟然是type,这似乎与我们的认识不一致,该怎么理解呢?

实际上从Python解释器的角度就能说的通:python在使用关键字class 定义 testClass类时,可理解为创建了一个特殊的对象(type类的对象)且将该对象赋给了testClass变量。

总结起来就是:在python代码中,使用class 创建的所有类都是type类的实例!

下面我们将为大家演示如何使用type函数动态创建/定义类!

使用type函数动态创建/定义类

解释下"动态创建"的意思:在代码的任何位置都可以创建!话不多说,直接看代码演示:

type函数动态创建类

上图程序的第5行代码使用type 函数创建了 Dog 类,并指定了该类的三个参数:

第一个参数:类名。 第二个参数:父类集合。用元组表示,指定所创建类继承的多个父类。尽管只有一个父类,也必须使用元组语法(父类+一个逗号) 第三个参数:字典。字典内容为所创建类绑定的类变量和方法,字典的 key 为类变量或方法名,字典的 value 为普通值时表示类变量;字典的 value 为函数名时则表示方法。

根据上述原则,就很容易看懂代码的内容了:

Dog类类名为'Dog' 父类只有一个:object类 类中定义了一个run方法和一个name类变量,其中run方法由runImpl函数实现 一个问题

大家可以尝试使用type函数来练习如下问题:

练习

总结

实际上,Python解释器在解释通过class创建的类时,都是通过type 函数来定义。所以,无论是使用普通的类创建方式还是type函数的类创建方式,python最终都是创建一个type类的实例,并将其赋值给所创建的类名!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-10-10 11:26:10
感谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-10-10 11:32:14
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-10-10 11:38:33
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-10-10 13:08:37
感谢分享!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-10-10 13:10:13
Python技能学起来
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群