zoukankan      html  css  js  c++  java
  • python反射

    反射:用户输入字符串,hasattr:到内存中找是否存在字符串对应的属性名或方法名、getattr获取、setattr增加、delattr删除对应属性、方法
     1 class Dog(object):
     2     def __init__(self,name):
     3         self.name=name
     4     def eat(self,food):
     5         print('%s is eating %s'%(self.name,food))
     6 
     7 def bulk(self):
     8     print('%s is yelling'%self.name)
     9 
    10 dog1=Dog('lele')
    11 choice=input('>>:').strip()
    12 if hasattr(dog1,choice):    #判断对象是否具有对应字符串的方法
    13     func=getattr(dog1,choice)     #根据字符串,获取对象对应方法的内存地址
    14     func('gutou')

    >>:eat
    lele is eating gutou

    if hasattr(dog1,choice):    #判断对象是否具有对应字符串的方法、属性
        func=getattr(dog1,choice)     #根据字符串,获取对象对应方法、属性的内存地址
        func('gutou')
    else:
        # 添加方法
        setattr(dog1,choice,bulk)  #给对象增加一个方法,setattr(x,'y',v)==> x.'y'=v
        func=getattr(dog1,choice)
        func(dog1)   #相当于静态方法,所以要把对象作为参数传进去

    >>:talk
    lele is yelling

    if hasattr(dog1,choice):    
        func=getattr(dog1,choice)     
        func('gutou')
    else:
        #添加属性
        setattr(dog1,choice,13)
        v=getattr(dog1,choice)
        print(v)

    >>:age
    13

    if hasattr(dog1,choice):    #判断对象是否具有对应字符串的方法或属性
        delattr(dog1,choice)    #删除对象的属性
    print(dog1.name)
  • 相关阅读:
    jQuery扩展函数设置所有对象只读
    Jquery一些实用函数
    原码,反码,补码
    数据库查询练习
    已知二叉树的先序遍历和中序遍历画出该二叉树
    linux 下 Google配置SwitchyOmega
    字母和数字转换
    c++产生验证码字符串
    C++产生随机数
    快速排序
  • 原文地址:https://www.cnblogs.com/ceceliahappycoding/p/8421511.html
Copyright © 2011-2022 走看看