zoukankan      html  css  js  c++  java
  • 定制自己的数据类型

    1,python中内建函数isinstance的用法

    语法:isinstance(object,type)

    其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。

    其返回值为布尔型(True or flase)。

    若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。

       a = "b"
    >>> isinstance(a,str)
    True
    >>> isinstance(a,int)
    False
    >>> isinstance(a,(int,list,float))
    False
    >>> isinstance(a,(int,list,float,str))
    True

    2,内置函数issubclass的用法

    语法:issubclass(sub,super)

    检查sub类是不是super类的派生类

    class A:

      pass

    class B:

      pass

    print issubclass(B,A)

    B是A类的子类,返回True,不是则返回False

    3,反射

    pychon中的反射功能是由以下四个内置函数提供:

    hasattr,getattr,setattr,delattr

    improt(module_name),改四个函数分别用于对对象内部执行:检查是否含有有某成员,获取成员,设置成员,删除成员,导入模块以字符串方式导入。

    class Foo(object):
      
        def __init__(self):
            self.name = 'python'
      
        def func(self):
            return 'func'
      
    obj = Foo()
      
    # #### 检查是否含有成员 ####
    hasattr(obj, 'name')
    hasattr(obj, 'func')
      
    # #### 获取成员 ####
    getattr(obj, 'name')
    getattr(obj, 'func')
      
    # #### 设置成员 ####
    setattr(obj, 'age', 18)
    setattr(obj, 'show', lambda num: num + 1)
      
    # #### 删除成员 ####
    delattr(obj, 'name')
    delattr(obj, 'func')
                


    4,内置atter

    __getattr__

    从对象中读取某个属性时,首先需要从self.__sicts__中搜索该属性,再从__getattr__中查找。

    class A(object):  
        def __init__(self):  
            self.name = 'from __dicts__: zdy'  
      
        def __getattr__(self, item):  
            if item == 'name':  
                return 'from __getattr__: zdy'  
            elif item == 'age':  
                return 26  
      
    a = A()  
    print a.name # 从__dict__里获得的  
    print a.age # 从__getattr__获得的

    __setattr__

    "__setattr__"函数是用来设置对象的属性,通过object中的__setattr__函数来设置属性:

    class A(object):
        def __setattr__(self, *args, **kwargs):  
            print 'call func set attr'  
            return object.__setattr__(self, *args, **kwargs) 

    __delattr__

    "__delattr__"函数式用来删除对象的属性:

    class A(object):
        def __delattr__(self, *args, **kwargs):  
            print 'call func del attr'  
            return object.__delattr__(self, *args, **kwargs)


     

  • 相关阅读:
    利用递归分割(Split)字符串
    SQL Server2012 T-SQL基础教程--读书笔记(1-4章)
    kindeditor编辑器的使用
    echarts绘制四川地图
    Windows下搭建PHP开发环境(Apache+PHP+MySQL)+调试工具Xdebug的配置
    给搜索关键字添加高亮,加以颜色区分
    SQL 生成6位随机数并MD5加密输出
    微信小程序登录 .net 后端实现
    钉钉小程序http post 请求
    浅谈Web Api配合SignalR的跨域支持
  • 原文地址:https://www.cnblogs.com/fengwu007/p/6757691.html
Copyright © 2011-2022 走看看