• python


    def hasattr(*args, **kwargs): # real signature unknown
        """
        Return whether the object has an attribute with the given name.
        
        This is done by calling getattr(obj, name) and catching AttributeError.
        """
        pass
    def getattr(object, name, default=None): # known special case of getattr
        """
        getattr(object, name[, default]) -> value
        
        Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.
        When a default argument is given, it is returned when the attribute doesn't
        exist; without it, an exception is raised in that case.
        """
        pass
    def setattr(x, y, v): # real signature unknown; restored from __doc__
        """
        Sets the named attribute on the given object to the specified value.
        
        setattr(x, 'y', v) is equivalent to ``x.y = v''
        """
        pass
    def delattr(x, y): # real signature unknown; restored from __doc__
        """
        Deletes the named attribute from the given object.
        
        delattr(x, 'y') is equivalent to ``del x.y''
        """
        pass
    class Foo:
        f = '类的静态变量'
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def say_hi(self):
            print('hi,%s'%self.name)
    
    obj=Foo('egon',73)
    
    #检测是否含有某属性
    print(hasattr(obj,'name'))
    print(hasattr(obj,'say_hi'))
    
    #获取属性
    n=getattr(obj,'name')
    print(n)
    func=getattr(obj,'say_hi')
    func()
    
    print(getattr(obj,'aaaaaaaa','不存在啊')) #报错
    
    #设置属性
    setattr(obj,'sb',True)
    setattr(obj,'show_name',lambda self:self.name+'sb')
    print(obj.__dict__)
    print(obj.show_name(obj))
    
    #删除属性
    delattr(obj,'age')
    delattr(obj,'show_name')
    delattr(obj,'show_name111')#不存在,则报错
    
    print(obj.__dict__)
    
    四个方法的使用演示

    1. isinstance/issubclass/type

    isinstance:检查第一个参数是不是第二个参数的子子孙孙类
    class A(object):
    pass
    class B(A):
    pass
    class C(B):
    pass

    print(issubclass(C,A))

    type:获取当前对象是由那个类创建
    class A(object):
    pass
    obj = A()
    print(type(obj))


    2. 方法和函数

    3. 反射

    反射

    1 什么是反射

    反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。

    2 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)

    四个可以实现自省的函数

    下列方法适用于类和对象(一切皆对象,类本身也是一个对象)

    导入其他模块,利用反射查找该模块是否存在某个方法

  • 相关阅读:
    30 张图详解操作系统总结!
    Redis配置与优化
    SpringBoot中使用@Async注解使用及其失效问题解决 规格严格
    Key exchange was not finished,connection is closed近期遇到这个错误sshd更新导致的 规格严格
    java SpringBoot注解@Async不生效的解决方法 规格严格
    Kafka Producer配置 规格严格
    SpringBoot项目迁移到tongweb 规格严格
    Spring Boot系列二 Spring @Async异步线程池用法总结 规格严格
    OutOfMemoryError: GC Overhead Limit Exceeded错误解析 规格严格
    SQL语句update set 嵌套 case when以及MyBatis中的写法 规格严格
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9562938.html
Copyright © 2020-2023  润新知