• python 类和对象下


    类的常用函数


    issubclass()

    检测一个类是否是另外一个类的子类
    
    格式1:issubclass(被检测类,父类)
    返回值:布尔值
    
    格式1:issubclass(被检测类,(父类1,父类2,父类3...))
    返回值:布尔值
    
    注意:只要有一个类是当前被检测类的父类,那么最终结果就是True
    

    isinstance()

    检测一个对象是否是某个类的对象
    
    格式1:isinstance(对象,类)
    返回值:布尔值
    
    格式2:isinstance(对象,(类1,类2,类3...))
    返回值:布尔值
    
    注意:只要一个类是当前对象的类,那么最终结果就是True
    

    hasattr()

    检测对象/类是否具有某个成员
    
    格式:hasattr(对象/类,'成员名')
    返回值:布尔值
    

    getattr()

    获取对象/类中的成员值
    
    格式:getattr(对象,'成员名'[,成员不存在时的默认值])
    返回值:成员的值
    

    setattr()

    设置或者添加对象/类中的成员
    
    格式:setattr(对象,'成员名',值)
    返回值:None
    

    delattr()

    删除对象/类中的成员
    
    格式: delattr(对象,成员)
    返回值:None
    

    dir()

    获取对象的成员名称列表
    
    格式:dir(对象)
    返回值:列表
    

    property()

    用于设置成员属性的修饰符
    
    格式:成员属性 = property(获取的方法,设置的方法,删除的方法)
    

    描述符


    python中的描述符是用于描述对象中的属性。主要作用就是对属性操作提供限制,验证,管理等相关权限的操作。

    描述符主要有三种操作需要设置:

    get      获取属性的操作
    
    set      设置属性的操作
    
    delete   删除属性的操作
    

    描述符方法1


    #描述符类
    class Description:
        #成员属性
        #name = ''
    
        #初始化方法
        def __init__(self):
            #为当前类/对象添加一个成员属性(当前类)来接收需要描述的成员属性(要描述的类)此处还没有接收(占位)
            self.name = None
    
        #get获取属性值的方法
        def __get__(self,obj,cls):# self 用于接收当前描述符类的对象 obj 接收用于管理的成员的对象  cls 用于接收管理成员的类
            print('获取方法被触发')
            self.name = str(self.name)
            return self.name[:4]
    
        #set设置属性值的方法
        def __set__(self,obj,val): #self 用于接收当前描述符类的对象 obj 接收用于管理的成员的对象 val 设置的值
            print('设置方法被触发')
            #print(self,obj,val)
            #在此处可以添加限制和判断(密码奇数时*2)
            if val %2 == 1:
                val *= 2
            #完成了(email)对象的属性值的设置
            self.name = val
    
        #delete删除属性值的方法
        def __delete__(self,obj): #self当前描述符类的对象 obj 接收用于管理的成员的对象
    
            #用户代为删除操作
            del self.name
    
    #声明一个邮箱的类
    class Email
        #属性
    
        #用户名
        account = 'conghao@zhiling.com'
        #密码(为密码设置了描述符 的对象) 这一步相当于吧password的所有传入了Description的对象当中
        password = Description()
    

    描述符方法2:


    #邮箱类
    class Email:
    
        #成员属性
        #为username添加描述符
        #username = ''
        #设置邮箱账号最大的长度
        maxlength = 6
        #为描述符添加一个临时变量(在描述符中代替username进行操作)
        tmpusername = None    
        password = ''
    
        #成员方法
        #为username的描述符进行设置(添加方法)
        #获取username的描述符方法
        def getusername(self):
            print('获取操作被触发')
            #返回值之前进行值的修饰,两边添加星星
            if self.tmpusername != None:
                self.tmpusername = '★' + self.tmpusername + '★'
            #设置获取username的时候的值
            return self.tmpusername
    
        #设置username的描述符方法
        def setusername(self,val):
            print('设置操作被触发')
            #限制,根据Email类的最大账号长度对用户名进行截取之后在设置
            #检测val是否是字符串类型
            if isinstance(val,str):
                val = val[0:self.maxlength]
            self.tmpusername = val
    
        #删除username的描述符方法
        def delusername(self):
            print('删除操作被触发')
            #删除操作
            del self.tmpusername
    
        #为username设置描述符
        username = property(getusername,setusername,delusername)
    

    3.属性修饰符


    #邮箱类
    class Email:
    
        #用户名
        username = ''
        #密码
        password = ''
        #使用描述符来操作昵称
        #昵称
        petname = '小乖乖'
        #为描述符设置临时变量
        __petname = None
    
        #成员方法(暂无)
        #描述符设置的三个部分  获取,设置和删除
        #处理petname获取操作
        @property
        def petname(self):
            print('获取操作被触发')
            return self.__petname
    
        #处理petname的设置操作
        @petname.setter
        def petname(self,val):
            print('设置操作被触发')
            #设置操作
            self.__petname = val
    
        #处理petname的删除操作
        @petname.deleter
        def petname(self):
            print('删除操作被触发')
            #删除操作
            del self.__petname
    

    类的内置属性


    __dict__

    获取当前类/对象成员组成的字典
    

    __doc__

    获取当前类/对象的文档,和函数一样使用''' 定义即可
    

    __name__

    类.__name__是获取当前类名,如果直接写__name__则是获取模块的名称
    

    __bases__

    获取类的继承列表中所有父类组成的元组
  • 相关阅读:
    HDU 1505 & POJ 1964 City Game (递推+扫描法)
    web页面内容优化管理与性能技巧
    POJ2406简单KMP
    poj2418map或者字典树
    poj2418map或者字典树
    POJ2296二分2sat
    POJ2296二分2sat
    poj2186强联通(牛仰慕)
    poj2186强联通(牛仰慕)
    poj2175费用流消圈算法
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/7861074.html
Copyright © 2020-2023  润新知