zoukankan      html  css  js  c++  java
  • python 反射的用法

    class Foo():
        def __init__(self,name):
            self.name=name
        def text(self):
            return 123
    f=Foo(1)
    '''
    hasattr(obj,name)
    判断一个对象里面是否有name属性,或者name方法,返回bool值,有name特性返回Ture,否则
    返回FALSE
    注意:name需要引号'''
    print(hasattr(f,'name'))
    print(hasattr(f,'text'))
    print(hasattr(f,'self.name'))
    print(hasattr(f,'__init__'))
    '''
    getattr(obj,name,[default])
    获取对象的属性或方法,如果存在,则返回它的属性值,如果不存在则会报错,也可以设置一个
    默认值,也会返回这个默认值;如果是对象的方法,则返回一个方法函数的内存地址,
    如果想要运行它,可以在后面添加()以及参数'''
    print(getattr(f,'name'))
    print(getattr(f,'text')())
    print(getattr(f,'__init__')('lll'))
    print(getattr(f,'ssss',11))
    '''
    setattr(obj,name,value)
    更改属性的值,如果属性不存在,会创建一个属性,然后赋值,如果更改的是方法,他将
    把方法更改为属性,并为其赋值
    '''
    print(setattr(f,'age','18'))
    print(setattr(f,'name','ldq'))
    print(setattr(f,'text','fun'))
    print(getattr(f,'age'))
    print(getattr(f,'name'))
    print(getattr(f,'text'))
  • 相关阅读:
    select @@identity的用法
    类的实践
    UVA 1572 SelfAssembly(图论模型+拓扑排序)
    UVA 10562 Undraw the Trees(多叉树的dfs)
    sprintf与sscanf用法举例
    UVA 10129 Play on Words(欧拉回路)
    UVA 816 Abbott's Revenge(bfs)
    递增【二分】
    递增【二分】
    递增【二分】
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8039410.html
Copyright © 2011-2022 走看看