zoukankan      html  css  js  c++  java
  • 反射

    反射

    class Foo(object):

    def __init__(self):
    self.name = "laozhang"

    def func(self):
    return "hello python"

    obj = Foo()
    #判断obj中是否有第二个参数
    #如果第二个只是属性,则返回属性值,如果是方法名,则返回方法的内存地址,如果第二个参数没有在对象中找到,程序崩溃
    # res = getattr(obj,"name1") #程序崩溃
    # res = getattr(obj,"name") #返回属性值 并同时可省略r = res()
    res = getattr(obj,"func") #res为func的内存地址
    r = res()
    print(r)

    #检查obj中是否存在func成员,当找到第二个参数时返回true,否则返回false
    res = hasattr(obj,"func")
    print(res)

    print(obj.name) #查看之前obj的name
    #设置obj中name为laowang
    res = setattr(obj,"name","laowang")
    print(obj.name)
    #当设置的值不存在时,会自动添加到实例对象中
    #setattr需要三个参数: x,y,z ==> x.y =z
    #相当于obj.age = 10
    setattr(obj,"age","10")
    print("name=%s,age=%s"%(obj.name,obj.age)) #laowang 10

    #删除对象的属性
    delattr(obj,"age")
    print("name=%s,age=%s"%(obj.name,obj.age)) #程序崩溃
  • 相关阅读:
    +1和*2
    线段树(区间最大值和最大值的个数)
    CodeForces
    莫队算法入门(暴力而不失优雅)
    二分迷宫
    全错排公式
    C++ PAT乙 1051. 复数乘法 (15)
    C++ PAT乙 1070. 结绳(25)
    C++ PAT乙 1080. MOOC期终成绩 (25)
    C++ PAT 1073. 多选题常见计分法(20)
  • 原文地址:https://www.cnblogs.com/whnbky/p/11449077.html
Copyright © 2011-2022 走看看