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)
  • 相关阅读:
    第九篇装饰器基本原理
    第八篇迭代器协议和生产器
    python第六篇文件处理类型
    Python开发【第十篇】:模块
    习题练习
    2.2.6 集合
    第七篇 python基础之函数,递归,内置函数
    Python开发【第五篇】:Python基础之杂货铺
    Python开发【第四篇】:Python基础之函数
    详解CSS position属性
  • 原文地址:https://www.cnblogs.com/ceceliahappycoding/p/8421511.html
Copyright © 2011-2022 走看看