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)


     

  • 相关阅读:
    Codeforces Round #669 (Div. 2) A、B题题解
    【证明】树上问题-树的直径
    Web前端开发——概述
    Codeforces Round #667 (Div. 3) A
    Codeforces Round #529 (Div. 3) 练习赛
    [Noip2012] 开车旅行 (倍增DP,难)
    国家集训队论文列表(1999-2019)
    博弈论经典模型解析(入门级)
    Problem 1342B
    SCOI2005 互不侵犯 (状态压缩入门题)
  • 原文地址:https://www.cnblogs.com/fengwu007/p/6757691.html
Copyright © 2011-2022 走看看