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)
  • 相关阅读:
    2019年11月体重管理进展
    云锵投资 2019 年 11 月简报
    2019年10月体重管理进展
    云锵投资 2019 年 10 月简报
    2019年9月体重管理进展
    云锵投资 2019 年 09 月简报
    2019年8月体重管理进展
    云锵投资 2019 年 08 月简报
    分布式系统发展史
    2019年7月体重管理进展
  • 原文地址:https://www.cnblogs.com/ceceliahappycoding/p/8421511.html
Copyright © 2011-2022 走看看