Python基于内置函数type创建新类型

作者:lincappu 时间:2023-11-18 10:00:29 

英文文档:

class type(object)

class type(name, bases, dict)

With one argument, return the type of an object. The return value is a type object and generally the same object as returned by object.__class__.

The isinstance() built-in function is recommended for testing the type of an object, because it takes subclasses into account.

With three arguments, return a new type object. This is essentially a dynamic form of the class statement. The namestring is the class name and becomes the __name__ attribute; the bases tuple itemizes the base classes and becomes the __bases__ attribute; and the dict dictionary is the namespace containing definitions for class body and is copied to a standard dictionary to become the __dict__ attribute.

返回对象的类型,或者根据传入的参数创建一个新的类型

说明:

1. 函数只传入一个参数时,返回参数对象的类型。 返回值是一个类型对象,通常与对象.__ class__返回的对象相同。


#定义类型A
>>> class A:
 name = 'defined in A'

#创建类型A实例a
>>> a = A()

#a.__class__属性
>>> a.__class__
<class '__main__.A'>

#type(a)返回a的类型
>>> type(a)
<class '__main__.A'>

#测试类型
>>> type(a) == A
True

2. 虽然可以通过type函数来检测一个对象是否是某个类型的实例,但是更推荐使用isinstance函数,因为isinstance函数考虑了父类子类间继承关系。


#定义类型B,继承A
>>> class B(A):
 age = 2

#创建类型B的实例b
>>> b = B()

#使用type函数测试b是否是类型A,返回False
>>> type(b) == A
False

#使用isinstance函数测试b是否类型A,返回True
>>> isinstance(b,A)
True

3. 函数另一种使用方式是传入3个参数,函数将使用3个参数来创建一个新的类型。其中第一个参数name将用作新的类型的类名称,即类型的__name__属性;第二个参数是一个元组类型,其元素的类型均为类类型,将用作新创建类型的基类,即类型的__bases__属性;第三个参数dict是一个字典,包含了新创建类的主体定义,即其值将复制到类型的__dict__属性中。


#定义类型A,含有属性InfoA
>>> class A(object):
 InfoA = 'some thing defined in A'

#定义类型B,含有属性InfoB
>>> class B(object):
 InfoB = 'some thing defined in B'

#定义类型C,含有属性InfoC
>>> class C(A,B):
 InfoC = 'some thing defined in C'

#使用type函数创建类型D,含有属性InfoD
>>> D = type('D',(A,B),dict(InfoD='some thing defined in D'))

#C、D的类型
>>> C
<class '__main__.C'>
>>> D
<class '__main__.D'>

#分别创建类型C、类型D的实例
>>> c = C()
>>> d = D()

#分别输出实例c、实例b的属性
>>> (c.InfoA,c.InfoB,c.InfoC)
('some thing defined in A', 'some thing defined in B', 'some thing defined in C')
>>> (d.InfoA,d.InfoB,d.InfoD)
('some thing defined in A', 'some thing defined in B', 'some thing defined in D')

来源:https://www.cnblogs.com/lincappu/p/8145050.html

标签:Python,内置,函数,type,类型
0
投稿

猜你喜欢

  • Html中JS脚本执行顺序简单举例说明

    2024-04-29 13:38:46
  • JavaScript使用Promise实现并发请求数限制

    2024-04-16 09:54:44
  • 教你用Django将前端的数据存入Mysql数据库

    2024-01-19 20:09:48
  • pythonfor循环中range与len区别

    2023-06-22 03:17:10
  • 浅谈FastClick 填坑及源码解析

    2024-04-10 16:08:57
  • python中用shutil.move移动文件或目录的方法实例

    2021-01-03 07:35:06
  • asp如何用数据库制作一个多用户版的计数器?

    2010-06-16 09:51:00
  • 提升设计品质的8个布局方案[译]

    2010-03-18 16:06:00
  • Python面向对象之类和对象属性的增删改查操作示例

    2021-11-06 14:20:40
  • Python采集C站高校信息实战示例

    2023-11-16 12:01:56
  • 使用python批量读取word文档并整理关键信息到excel表格的实例

    2022-02-10 16:25:21
  • asp如何去除HTML标签

    2010-06-07 20:47:00
  • Python实战之实现简单的名片管理系统

    2023-07-18 06:48:02
  • MySQL Delete 删数据后磁盘空间未释放的原因

    2024-01-23 10:56:14
  • Vue 2.0入门基础知识之内部指令详解

    2024-05-10 14:17:19
  • go语言发送smtp邮件的实现示例

    2023-06-20 06:59:14
  • pytorch 批次遍历数据集打印数据的例子

    2022-06-09 08:23:46
  • 详解Vue使用命令行搭建单页面应用

    2024-04-10 10:24:03
  • easy_install python包安装管理工具介绍

    2022-01-01 14:06:59
  • python 绘制拟合曲线并加指定点标识的实现

    2023-07-25 20:29:51
  • asp之家 网络编程 m.aspxhome.com