• 其它内置函数


    1 isinstance(obj,cls)和issubclass(sub,super)

    2 反射

    3 propert

    4 __doc__


    1 isinstance(obj,cls)和issubclass(sub,super)

    isinstance(obj,cls)检查是否obj是否是类 cls 的对象

    class Foo(object):
        pass
    
    obj = Foo()
    isinstance(obj, Foo)

    issubclass(sub, super)检查sub类是否是 super 类的派生类

    class Foo(object):
        pass
     
    class Bar(Foo):
        pass
     
    issubclass(Bar, Foo)

    2 反射

    class BlackMedium:
        feature='Ugly'
        def __init__(self,name,addr):
            self.name=name
            self.addr=addr
    
        def sell_house(self):
            print('%s 黑中介卖房子啦,傻逼才买呢,但是谁能证明自己不傻逼' %self.name)
        def rent_house(self):
            print('%s 黑中介租房子啦,傻逼才租呢' %self.name)
    
    b1=BlackMedium('万成置地','回龙观天露园')
    
    #检测是否含有某属性
    print(hasattr(b1,'name')) #True
    print(hasattr(b1,'sell_house')) #True
    
    #获取属性
    n=getattr(b1,'name')
    print(n) #万成置地
    func=getattr(b1,'rent_house')
    func() #万成置地 黑中介租房子啦,傻逼才租呢
    
    # getattr(b1,'aaaaaaaa') #报错
    print(getattr(b1,'aaaaaaaa','不存在啊')) #不存在啊
    
    #设置属性
    setattr(b1,'sb',True)
    setattr(b1,'show_name',lambda self:self.name+'sb')
    print(b1.__dict__)#{'name': '万成置地', 'addr': '回龙观天露园', 'sb': True, 'show_name': <function <lambda> at 0x000002261BC298C8>}
    print(b1.show_name(b1))# 万成置地sb
    
    #删除属性
    delattr(b1,'addr')
    delattr(b1,'show_name')
    delattr(b1,'show_name111')#不存在,则报错
    
    print(b1.__dict__)#{'name': '万成置地', 'sb': True}

    3 propert

    一个静态属性property本质就是实现了get,set,delete三种方法

    #用法一:
    class Foo:
        @property
        def AAA(self):
            print('get的时候运行我啊')
    
        @AAA.setter
        def AAA(self,value):
            print('set的时候运行我啊')
    
        @AAA.deleter
        def AAA(self):
            print('delete的时候运行我啊')
    
    #只有在属性AAA定义property后才能定义AAA.setter,AAA.deleter
    f1=Foo()
    f1.AAA
    f1.AAA='aaa'
    del f1.AAA
    #用法二:
    class Foo:
        def get_AAA(self):
            print('get的时候运行我啊')
    
        def set_AAA(self,value):
            print('set的时候运行我啊')
    
        def delete_AAA(self):
            print('delete的时候运行我啊')
    AAA=property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应
    
    f1=Foo()
    f1.AAA
    f1.AAA='aaa'
    del f1.AAA

    4 __doc__

    它类的描述信息
    class Foo:
        '我是描述信息'
        pass
    
    print(Foo.__doc__)
    #该属性无法被继承
    class Foo:
        '我是描述信息'
        pass
    
    class Bar(Foo):
        pass
    print(Bar.__doc__) #该属性无法继承给子类
  • 相关阅读:
    webService 部署以后参数输入框不能显示
    c# 发送邮件功能
    Linux上的free命令详解
    curl 命令详解
    查看mysql的root密码
    [shell]find用法小结
    ArrayList Vector LinkedList 区别与用法
    SecureCRT编码转换vim
    HashMap和Hashtable的区别
    Java中ArrayList和 LinkedList区别
  • 原文地址:https://www.cnblogs.com/snailgirl/p/8513819.html
Copyright © 2020-2023  润新知