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__

获取类的继承列表中所有父类组成的元组
posted @ 2017-11-19 19:50  Bob__Zhang  阅读(217)  评论(0编辑  收藏  举报