Python中type的用法

目录

描述

python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型。当有三个参数的时候返回一个类对象。

语法

type(object)

type(name, bases, dict)

用法

一个参数

type(object)

返回一个对象的类型,如:

In [1]: a = 10 
               
In [2]: type(a)
Out[2]: int    

三个参数

tpye(name, bases, dict)

  • name 类名
  • bases 父类的元组
  • dict 类的属性方法和值组成的键值对

返回一个类对象:

# 实例方法
def instancetest(self):
    print("this is a instance method")


# 类方法
@classmethod
def classtest(cls):
    print("this is a class method")


# 静态方法
@staticmethod
def statictest():
    print("this is a static method")


# 创建类
test_property = {"name": "tom", "instancetest": instancetest, "classtest": classtest, "statictest": statictest}
Test = type("Test", (), test_property)


# 创建对象
test = Test()
# 调用方法
print(test.name)
test.instancetest()
test.classtest()
test.statictest()

运行结果:

tom
this is a instance method
this is a class method
this is a static method

使用help打印Test的详细信息:

class Test(builtins.object)                                               
 |  Methods defined here:                                                 
 |                                                                        
 |  instancetest(self)                                                    
 |      # 实例方法                                                            
 |                                                                        
 |  ----------------------------------------------------------------------
 |  Class methods defined here:                                           
 |                                                                        
 |  classtest() from builtins.type                                        
 |      # 类方法                                                             
 |                                                                        
 |  ----------------------------------------------------------------------
 |  Static methods defined here:                                          
 |                                                                        
 |  statictest()                                                          
 |      # 静态方法                                                            
 |                                                                        
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:                                        
 |                                                                        
 |  __dict__                                                              
 |      dictionary for instance variables (if defined)                    
 |                                                                        
 |  __weakref__                                                           
 |      list of weak references to the object (if defined)                
 |                                                                        
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:                               
 |                                                                        
 |  name = 'tom'                                        

可以看出我们创建了一个Test类,包含一个实例方法statictest,类方法classtest,静态方法statictest,和一个属性name = 'tom'。

type和isinstance

type不会认为子类是父类的类型,不会考虑继承关系。isinstance会任务子类是父类的类型,考虑继承关系。

Type和Object

type为对象的顶点,所有对象都创建自type。

object为类继承的顶点,所有类都继承自object。

python中万物皆对象,一个python对象可能拥有两个属性,__class____base____class__ 表示这个对象是谁创建的,__base__ 表示一个类的父类是谁。

In [1]: object.__class__
Out[1]: type

In [2]: type.__base__
Out[2]: object

可以得出结论:

  • type类继承自object
  • object的对象创建自type

猜你喜欢

转载自www.cnblogs.com/mxuanli/p/9805122.html
今日推荐