zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Windows下压缩成tar.gz格式
    mysql 创建索引和删除索引
    jQuery鼠标事件
    MySql like模糊查询使用详解
    eclipse不能更改设置tomcat 中的ServerLocation问题
    eclipse安装tomcate插件步骤
    php折线图 布局图
    mysql 存储过程详解 存储过程
    解决Toad for Oracle显示乱码问题
    Readings in Databases
  • 原文地址:https://www.cnblogs.com/linwenbin/p/10530854.html
Copyright © 2011-2022 走看看